细说docker第三篇

本篇来介绍docker的数据卷和网络相关

一、学完本篇之后掌握的知识点

  • docker的文件系统

  • docker创建 Volume(数据卷)

  • 数据卷容器

二、 docker的文件系统

2.1、docker的镜像到底是什么

Docker镜像是由多个文件系统(只读层)叠加而成,当我们启动一个容器的时候,Docker会加载只读镜像层并在其上添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重新启动时,之前的更改将会丢失。在Docker中,只读层及在顶部的读写层的组合被称为Union File System(联合文件系统)。为了能够保存(持久化)数据以及共享容器间的数据,Docker提出了Volume的概念。简单来说,Volume就是目录或者文件,它可以绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上

2.2、初始化数据卷

初始化数据卷有两种方式,一种是通过命令行模式,另外一种是通过Dockerfile

2.21、通过命令行模式

#运行centos容器
docker run -dit --name centos -v $PWD:/opt/test centos  /bin/bash
[root@host ~]  docker inspect centos

 "Mounts": [
            {
                "Type": "bind",
                "Source": "/root",
                "Destination": "/opt/test",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]

2.22、Dockerfile 的 VOLUME指令

FROM debian:wheezy
VOLUME /data

2.3、数据卷容器

如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载, 数据卷容器可以不用启动也可以

2.3.1、创建数据卷容器

docker run -it -v /dbdata --name dbdata centos

2.3.2、使用其它容器挂载数据卷容器

docker run -dit --name centos1 --volumes-from dbdata centos
docker run -dit --name centos2 --volumes-from dbdata centos

2.3.3、备份数据卷容器

docker run --volumes-from dbdata -v $PWD/backup:/backup --name worker centos tar zcvf /backup/backup.tar dbdata  #备份数据卷容器内的数据

2.3.4、在任何一个容器写入, 其它窗口都可以看到

docker exec -it centos1 bash 
cd /dbdata


相关推荐

  • 细说docker系列之集群swarm上篇

    从本篇正式开始,我们将接触docker的高级部分,也就是docker的集群,那么关于docker的集群方案也有很多, 我知道的有 kubernetes(k8s)...

    Border circle luohua 2020-07-19 15:51:45 0 0 31

  • 细说docker第三篇

    本篇来介绍docker的数据卷和网络相关

    Border circle luohua 2020-07-19 15:33:13 0 0 14

发表评论