1. 简介
Dockerfile就是构建docker镜像的构建文件,命令脚本。
通过这个脚本生成镜像,镜像是一层一层的,脚本是一个一个的命令,每个命令都是一层。
2. 编写文件
- 在
/home
目录下创建测试文件夹docker-test-volume
。
root@docker:/home# ls ceshi henggao mysql test.java # 1. 创建测试文件夹docker-test-volume root@docker:/home# mkdir docker-test-volume root@docker:/home# ls ceshi docker-test-volume henggao mysql test.java root@docker:/home# cd docker-test-volume/ # 2. 创建dockerfile1,名字可以随机,建议Dockerfile root@docker:/home/docker-test-volume# vim dockerfile1 root@docker:/home/docker-test-volume#
- dockerfile1中写入内容
# 文件中的内容发,命令(大写)参数 FROM centos VOLUME ["volume01","volume02"] CMD echo "------end------" CMD /bin/bash
3. 构建
3.1 构建命令
docker build -f /home/docker-test-volume/dockerfile1 -t henggao/centos:1.0 .
3.2 运行如图
3.3 生成镜像如图
4. 启动自己的镜像
4.1 以自己的镜像运行一个容器
root@docker:/home/docker-test-volume# docker run -it d3c700b4cc56 /bin/bash
4.2 查看目录
这个卷和外部一定有一个同步的目录。步骤2中
创建一个测试文件
[root@89c4b018a181 /]# cd volume01 [root@89c4b018a181 volume01]# ls [root@89c4b018a181 volume01]# touch container.txt
4.3 查看卷挂载的路径
# 1. 查看容器id root@docker:/home/henggao/Desktop# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 89c4b018a181 d3c700b4cc56 "/bin/bash" 8 minutes ago Up 8 minutes elastic_lichterman f57f1e27658f portainer/portainer-ce "/portainer" 13 hours ago Up 32 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp, 9443/tcp portainer # 2. 查看容器信息 root@docker:/home/henggao/Desktop# docker inspect 89c4b018a181
容器外的目录信息如下
主机查看测试文件是否同步出去
root@docker:/home/henggao/Desktop# cd /var/lib/docker/volumes/acad53cf933f8847906a69a38dce4a711c8b90d904b0c0786fbbcbc838019055/_data root@docker:/var/lib/docker/volumes/acad53cf933f8847906a69a38dce4a711c8b90d904b0c0786fbbcbc838019055/_data# ls container.txt root@docker:/var/lib/docker/volumes/acad53cf933f8847906a69a38dce4a711c8b90d904b0c0786fbbcbc838019055/_data#
这种方式使用的十分多,通常会构建自己的镜像。
假设构建镜像的时候没有挂载卷,要手动镜像挂载
-v 卷名:容器内路径
。