Docker 学习文档(知识结构整理)

2020-06-17 06:57:09易采站长站整理

Best practices for writing DockerfilesDockerfile最佳实践(一)Dockerfile最佳实践(二)八、容器数据管理

docker管理数据的方式有两种:

数据卷数据卷容器8.1 数据卷

数据卷是一个或多个容器专门指定绕过Union File System的目录,为持续性或共享数据提供一些有用的功能:

数据卷可以在容器间共享和重用数据卷数据改变是直接修改的数据卷数据改变不会被包括在容器中数据卷是持续性的,直到没有容器使用它们添加一个数据卷

你可以使用-v选项添加一个数据卷,或者可以使用多次-v选项为一个 docker 容器运行挂载多个数据卷。


$ sudo docker run --name data -v /data -t -i ubuntu:14.04 /bin/bash
# 创建数据卷绑定到到新建容器,新建容器中会创建 /
data 数据卷 bash-4.1# ls -ld /data/drwxr-xr-x 2 root root 4096 Jul 23 06:59 /data/bash-4.1
# df -ThFilesystem Type Size Used Avail Use% Mounted on... ... ext4 91G 4.6G 82G 6% /data

创建的数据卷可以通过docker inspect获取宿主机对应路径


$ sudo docker inspect data... ...
"Volumes": { "/data": "/var/lib/docker/vfs/dir/151de401d268226f96d824fdf444e77a4500aed74c495de5980c807a2ffb7ea9" }, # 可以看到创建的数据卷宿主机路径 ... ...

或者直接指定获取

$ sudo docker inspect –format=”{{ .Volumes }}” datamap[/data: /var/lib/docker/vfs/dir/151de401d268226f96d824fdf444e77a4500aed74c495de5980c807a2ffb7ea9]

挂载宿主机目录为一个数据卷

-v选项除了可以创建卷,也可以挂载当前主机的一个目录到容器中。

$ sudo docker run –name web -v /source/:/web -t -i ubuntu:14.04 /bin/bashbash-4.1# ls -ld /web/drwxr-xr-x 2 root root 4096 Jul 23 06:59 /web/bash-4.1# df -Th… … ext4 91G 4.6G 82G 6% /webbash-4.1# exit

默认挂载卷是可读写的,可以在挂载时指定只读

$ sudo docker run –rm –name test -v /source/:/test:ro -t -i ubuntu:14.04 /bin/bash

8.2 创建和挂载一个数据卷容器

如果你有一些持久性的数据并且想在容器间共享,或者想用在非持久性的容器上,最好的方法是创建一个数据卷容器,然后从此容器上挂载数据。

创建数据卷容器

使用–volumes-from选项在另一个容器中挂载 /test 卷。不管 test 容器是否运行,其它容器都可以挂载该容器数据卷,当然如果只是单独的数据卷是没必要运行容器的。

添加另一个容器

$ sudo docker run -t -i -d –volumes-from test –name test2 ubuntu:14.04 /bin/bash

也可以继承其它挂载有 /test 卷的容器

$ sudo docker run -t -i -d –volumes-from test1 –name test3 ubuntu:14.04 /bin/bash

非常详细的 Docker 学习笔记