Docker File就是用来构建Docker镜像的构建文件

编写DockerFile

1、这里的每一个命令都是镜像中的一层

[root@localhost ~]# cat dockerfile 
FROM centos
VOLUME ["volume01", "volume02"] # 匿名挂载,只写了容器内路径
CMD echo "------end-------"
CMD /bin/bash

2、使用docker build通过docker file构建镜像

[root@localhost ~]# docker build -f dockerfile -t nowseccentos:2.1 .
Sending build context to Docker daemon  23.04kB
Step 1/4 : FROM centos
 ---> 5d0da3dc9764
Step 2/4 : VOLUME ["volume01", "volume02"]
 ---> Running in 2a90557549cd
Removing intermediate container 2a90557549cd
 ---> 09c93db8ad2a
Step 3/4 : CMD echo "------end-------"
 ---> Running in bb912b10c767
Removing intermediate container bb912b10c767
 ---> 2f724de367a1
Step 4/4 : CMD /bin/bash
 ---> Running in 421d8d01b711
Removing intermediate container 421d8d01b711
 ---> 22ca20256dfd
Successfully built 22ca20256dfd
Successfully tagged nowseccentos:2.1

3、启动制作的镜像

[root@localhost ~]# docker run -itd nowseccentos:2.1
3ae467f4146a6cc0e068c0035cc53fb484aa5a6473d502dc18fd38c6abf77536

4、查看容器的镜像挂载

[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                       NAMES
3ae467f4146a   nowseccentos:2.1      "/bin/sh -c /bin/bash"   5 seconds ago   Up 3 seconds                                               elastic_cerf
[root@localhost ~]# docker inspect elastic_cerf
  "Mounts": [
            {
                "Type": "volume",
                "Name": "2951b537c4759c47eeeb4503c6d479c69231e146d83434e4fd09d2684ed49512",
                "Source": "/var/lib/docker/volumes/2951b537c4759c47eeeb4503c6d479c69231e146d83434e4fd09d2684ed49512/_data",
                "Destination": "volume02",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "5dafcdbbdf2acf7177e603a822ae14656cab9ccedc4184d0868620e8b7896d31",
                "Source": "/var/lib/docker/volumes/5dafcdbbdf2acf7177e603a822ae14656cab9ccedc4184d0868620e8b7896d31/_data",
                "Destination": "volume01",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

5、查看Docker数据卷信息

[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     5dafcdbbdf2acf7177e603a822ae14656cab9ccedc4184d0868620e8b7896d31
local     802c798952c0d2d4cef6891c9cf7faa2a7f26db57e540696862c0933b2d5d55e
local     2951b537c4759c47eeeb4503c6d479c69231e146d83434e4fd09d2684ed49512

6、进入容器查看容器内数据卷

[root@localhost ~]# docker exec -it elastic_cerf /bin/bash
[root@3ae467f4146a /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01  volume02

数据卷容器

容器间数据同步

image-20211114142445046.png

启动第一个容器

使用之前创建的镜像来启动docker01

docker exec -it docker01 /bin/bash

image-20211114143214907.png

> 启动第二个容器

使用docker01作为父容器来启动docker02

docker run -itd --name docker02 --volumes-from docker01 nowseccentos:2.1

启动后查看docker01和docker02中都有volume01和volume02

image-20211114143729498.png

在docker01的volume01中创建文件,然后进入docker02中的volume02中查看,看到文件会同步

image-20211114144014314.png