数据卷挂载 方式二
Dockerfile
就是用来构建docker
镜像的构建文件!命令脚本!- 通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令,每个命令都是一层!
- 创建一个
dockerfile
文件,名字可以随便,建议dockerfile
- 文件中的内容:指令(大写) + 参数
[root@VM-0-6-centos ceshi]# vim dockerfile // 新建dockerfile文件
FROM centos # 当前这个镜像是以centos为基础的
VOLUME ["/volume01","/volume02"] # 挂载卷的卷目录列表(多个目录,名字自定义,需要加“/”,否则可能在启动容器时出错)
CMD echo "----------------end-----------------" # 输出一下用于测试
CMD /bin/bash # 默认走bash控制台
- 这里的每个命令,就是镜像的一层!
构建出这个镜像
-f dockerfile
:-f
代表file
,指这个当前文件的地址(这里是当前目录下的dockerfile
)-t yj/centos
:-t
就代表target
,指目标目录(注意yj
镜像名前不能加斜杠‘/’
).
:表示生成在当前目录下
[root@VM-0-6-centos docker_volume]# docker build -f dockerfile1 -t yj/centos .
Sending build context to Docker daemon 1.15GB
Step 1/4 : FROM centos
---> 300e315adb2f
Step 2/4 : VOLUME ["/volume01","/volume02"]
---> Running in 112cfa472a06
Removing intermediate container 112cfa472a06
---> c6f7f622fb6b
Step 3/4 : CMD echo "----------------end-----------------"
---> Running in 7d616fea3a77
Removing intermediate container 7d616fea3a77
---> 1d462886cc26
Step 4/4 : CMD /bin/bash
---> Running in 9e163504c394
Removing intermediate container 9e163504c394
---> f7e2c97dda5d
Successfully built f7e2c97dda5d
Successfully tagged yj/centos:latest
- 查看自己构建的镜像
[root@VM-0-6-centos ceshi]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yj/centos latest 4a7146fa6693 11 minutes ago 209MB
- 启动自己写的容器镜像
[root@VM-0-6-centos docker_volume]# docker run -it yj/centos /bin/bash
[root@e4446cd39ef8 /]# ls -l
total 56
lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x 5 root root 360 Jun 27 08:06 dev
drwxr-xr-x 1 root root 4096 Jun 27 08:06 etc
drwxr-xr-x 2 root root 4096 Nov 3 2020 home
lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------ 2 root root 4096 Dec 4 2020 lost+found
drwxr-xr-x 2 root root 4096 Nov 3 2020 media
drwxr-xr-x 2 root root 4096 Nov 3 2020 mnt
drwxr-xr-x 2 root root 4096 Nov 3 2020 opt
dr-xr-xr-x 109 root root 0 Jun 27 08:06 proc
dr-xr-x--- 2 root root 4096 Dec 4 2020 root
drwxr-xr-x 11 root root 4096 Dec 4 2020 run
lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Nov 3 2020 srv
dr-xr-xr-x 13 root root 0 Nov 3 2020 sys
drwxrwxrwt 7 root root 4096 Dec 4 2020 tmp
drwxr-xr-x 12 root root 4096 Dec 4 2020 usr
drwxr-xr-x 20 root root 4096 Dec 4 2020 var
drwxr-xr-x 2 root root 4096 Jun 27 08:06 volume01 // 生成镜像时,自动创建的容器内部目录(数据卷目录)
drwxr-xr-x 2 root root 4096 Jun 27 08:06 volume02
- 在容器
数据卷目录
内创建一个测试文件
[root@e4446cd39ef8 volume01]# touch ceshi.txt
[root@e4446cd39ef8 volume01]# ls
ceshi.txt
- 查找主机内匿名的对应挂载目录
[root@VM-0-6-centos ~]# docker inspect e4446cd39ef8 // 查看容器信息
"Mounts": [
{
"Type": "volume",
"Name": "b19bf2305cc185544c88e9da335c1298740f634fcbdb9aea93a261e75830fbca",
// 对应主机的匿名挂载目录
"Source": "/var/lib/docker/volumes/b19bf2305cc185544c88e9da335c1298740f634fcbdb9aea93a261e75830fbca/_data",
"Destination": "/volume01",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "8dfc0825c075ba459ea91ba282324b757e0d9fec2c2e8365ab2b31678161ed7a",
// 对应主机的匿名挂载目录
"Source": "/var/lib/docker/volumes/8dfc0825c075ba459ea91ba282324b757e0d9fec2c2e8365ab2b31678161ed7a/_data",
"Destination": "/volume02",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
- 查看主机对应目录信息,和容器内的目录内容同步
[root@VM-0-6-centos /]# cd /var/lib/docker/volumes/b19bf2305cc185544c88e9da335c1298740f634fcbdb9aea93a261e75830fbca/_data
[root@VM-0-6-centos _data]# ls
ceshi.txt