- docker核心组件-技术手段:
C/S(Client/Sercer)
daemon-dockedd后台守护进程
CLI-command line interface(face)
tcp协议(HTTP协议)
- 业务手段
仓库-集中存放镜像的地方
镜像-最基础的系统,应用,只读
容器-基于镜像的运行的实体,可以读写
数据持久化-添加数据盘,数据卷,挂载linux目录
网络-bridge,nat,自定义
- docker容器数据管理的两种方式
10.1. 挂载主机目录
python docker run --name xxxx -p 8888:8888 -v /my:/docker -it imagename /bin/bash
–name: 为容器起名字
-p:宿主机端口:docker端口 (端口映射)
-v:宿主机目录:docker目录 (必须为绝对路径)
10.2. 数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:
数据卷可以在容器之间共享和重用
对数据卷的修改会立马生效
对数据卷的更新,不会影响镜像
数据卷默认会一直存在,即使容器被删除
创建数据卷
docker volume create mydata
查看所有数据卷
docker volume ls
查看数据卷信息
docker volume inspect mydata
挂载数据卷
docker run --name xxxx -p 8888:8888 -v mydata:/docker -it imagename /bin/bash
mydata:数据卷。系统自动寻找。
挂载方式二:
docker run --name xxxx -p 8888:8888 --mount
type:volume,source=/src/xxx,target=/xxx /my:/docker -it imagename /bin/bash
type选项,其可以是bind,volume,或 tmpfs。本主题讨论卷,因此类型始终是 volume
注意:使用-v参数时如果本地目录不存在Docker会自动为你创建一个文件夹。使用–mount参数时如果本地目录不存在,Docker会报错。Docker挂载主机目录的默认权限是读写,用户也可以通过增加readonly指定为只读。
如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。(我的测试:使用 -v 参数并没有这个效果,需要使–mount参数,如果不符请指正)
如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中目录非空,那么这些原始数据会被隐藏掉。