一、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 容器卷名 # 查看指定容器卷详情信息
三、具名和匿名挂载
匿名挂载:卷挂载只写容器里面的路径,不写容器外的路径
-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 ' 内容 ' > 映射到的地方(路径)
注意:echo '<h1>hello</h1>' > /usr/share/nginx/html/index.html 是把hello 映射到 index.html路径里面
第二步 创建镜像
docker build -t mynginx:v1 .
# -t mynginx:v1 指的是需要创建镜像的名字 :v1 第一个版本 . 指的是当前路径,包含了dockerfile文件
第三步 (查看镜像是否创建成功)
第四步 运行自己创建的镜像
docker run --name mynginx -d -p 80:80 mynginx
4、实战2 (制作 tomat镜像)
步骤1 编写dockerfile
1、jdk和tormat包上传到/opt/mytormat(我自己的路径)里面
tomcat: 参考网址:Apache Tomcat® - Apache Tomcat 8 Software Downloads
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