一、docker容器数据卷

1、数据卷概念

1.1 数据卷是宿主机中的一个目录和文件

1.2 当容器目录和数据卷目录绑定后。对方修改会立即同步

1.3 一个数据卷可以同时被多个容器同时挂载

2、数据卷作用

2.1 容器数据持久化

2.2 外部机器和容器间接通信

2.3 容器之间数据交换

一句话:卷技术就是为了实现数据的持久化和同步操作,容器间也是数据共享        

3、配置数据卷

docker run 其他一些可选参数 -v 宿主机目录(文件):容器目录(文件) 镜像名


--name      容器名字
-d          后台交互式
-p          自定义端口   主机端口:容器端口
--rm        容器停止运行,会自动删除
-e
-v          宿主机目录(文件):容器目录(文件)      数据卷的绑定

注意事项:
1. 目录必须是绝对路径
2. 如果目录不存在则会自动创建
3. 可以挂载多个技术卷

二、Volume的基本使用

docker volume create 容器卷名        # 创建一个自定义容器卷

docker volume ls                 # 查看容器卷列表

docker volume inspect  容器卷名  # 查看指定容器卷详情信息

国产 docker 替代品_数据

 三、具名和匿名挂载

匿名挂载:卷挂载只写容器里面的路径,不写容器外的路径

-v   容器内的路径      匿名挂载
-v   卷名:容器内的路径   具名
-v   /宿主机内路径:容器内路径



ro  readonly   # 只读
rw  readwrite  # 可读可写
docker run -d -P --name 123 -v 自定义卷名:容器内的路径:ro/rw  镜像名

四、dockerFile

1、定义:

        dockerfile是一个可以自定义镜像所有命令的文本文件,包含了一条条指令和说明。

有了dockerfile就可以指定自己的docker镜像规则

2、文件格式内容

# 文本文件内的格式命令
# 格式
# 1、
FROM 基础镜像名:版本     #基础镜像         
# 2、
MAINTAINER  维护者名字  维护者邮箱           # 指定维护者信息  姓名 邮箱


# 3、
RUN         # 指的是想让他干嘛(在run前面加上RUN即可) 镜像构建的时候要运行的命令
# shell    command命令形式
# exec     ["",""]
# 格式
RUN echo '-------h1 run shell ---'
RUN ["echo","------h1 run exec ----"]

# 4、
ADD        #本地文件增加到容器内,
# 可以访问网络资源,
#压缩格式如果是 gzip   bzip   add指令都会将其解压缩 
# 格式
ADD wget

#5、
COPY      # 类似ADD   将我们文件拷贝到镜像中 ,注意:不会自动解压缩  不能访问网络资源
# 格式
COPY 源路径  容器内目录路径


# 6、
CMD         指定容器启动的时候要运行的命令  。 只有一个会生效
# shell    command命令形式
# exec     ["",""]
# 格式
CMD echo '-------h1 run shell ---'
CMD ["echo","------h1 run exec ----"]

------------------------------------------
ENTRYPOINT ["rm","docker2"]
CMD ["-rf"]
# 真正执行的命令将会是 rm docker2 -rf


# 7、   LABEL  标签
# LABEL version="1.0"
LABEL VERSION="1.0" description="服务器"

# 8、 ENV 设置环境变量的
ENV MODE=test
RUN yum install -y curl && curl http:192.168.128.128/$MODE  # && 这个符号是追加的意思

WORKDIR   设置当前工作目录


# 9、EXPOSE    运行时容器服务端口
EXPOSE 80
EXPOSE 8080

# 10、VOLUME   用于构建镜像时定义卷  设置卷,挂载主机目录
# exec 形式
VOLUME ["/data"]


# 11、WORKDIR   设置当前工作目录
WORKDIR  路径

# 12、ARG 和 env 设置环境变量
# ARG  设置环境变量的时候,只是在镜像构建的时候设置
ARG APP="PYTHON.STA"


# 13、ONBUILD  指令就是为了帮助别人定制   一般和 RUN 连用  例如 ONBUILD RUN 



ENTRYPOINT    指定容器启动的时候运行命令   可以追加命令

3、实战一  用dockerfile说一hello

第一步

echo的语法格式: echo ' 内容 ' > 映射到的地方(路径)

国产 docker 替代品_docker_02

注意:echo '<h1>hello</h1>' > /usr/share/nginx/html/index.html  是把hello 映射到 index.html路径里面   

第二步 创建镜像 

docker build -t mynginx:v1 .   
# -t mynginx:v1  指的是需要创建镜像的名字  :v1 第一个版本    . 指的是当前路径,包含了dockerfile文件

第三步 (查看镜像是否创建成功)

国产 docker 替代品_1024程序员节_03

 第四步 运行自己创建的镜像

docker run --name mynginx -d -p 80:80 mynginx

国产 docker 替代品_1024程序员节_04

国产 docker 替代品_1024程序员节_05

4、实战2 (制作 tomat镜像)

步骤1  编写dockerfile

1、jdk和tormat包上传到/opt/mytormat(我自己的路径)里面    

tomcat: 参考网址:Apache Tomcat® - Apache Tomcat 8 Software Downloads

国产 docker 替代品_国产 docker 替代品_06

2、

# 编写dockerfile文件

vim Dockerfile

3、在dockerfile中编写一些dockerfile的指令

# 基本镜像
FROM centos

# 维护者信息
MAINTAINER  shiyi 1390806607@qq.com

# 把依赖包加进来  ADD命令可以追加也可以解压
ADD ./jdk-17_linux-aarch64_bin.tar.gz /user/local
ADD ./apache-tomcat-8.5.72.tar.gz /usr/local

RUN yum install -y vim

# 设置环境变量
ENV MYPATH /usr/local

# 设置工作目录
WORKDIR $MYPATH

ENV JAVA_HOME=/usr/local/jdk-17_linux-aarch64_bin
ENV TOMCAT_HOME=/usr/local/apache-tomcat-8.5.72
ENV PATH $PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin:$TOMCAT_HOMT/lib

# 配置端口
EXPOST 8080

CMD /usr/local/apache-tomcat-8.5.72/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.72/bin/logs/catalina.out

jdk: 参考网址:Java Downloads | Oracle

步骤2 docker build构建一个镜像

docker build -t mytomcat:v1 .

步骤3 docker run 运行镜像

docker run --name myytomcat -d -p 80801:8080 mytomcat:v1

上一章节:

下一章节: