介绍如何在 Docker 内部以及容器之间管理数据;在容器中管理数据主要有两种方式:数据卷(Volumes)、挂载主机目录 (Bind mounts)
镜像来源
1 | [root@docker01 ~]# docker pull registry.cn-beijing.aliyuncs.com/google_registry/nginx:1.17 |
数据卷【-v, --volume】
数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
1、数据卷可以在容器之间共享和重用
2、对数据卷的修改会立马生效
3、对数据卷的更新,不会影响镜像
4、数据卷默认会一直存在,即使容器被删除
注意:数据卷的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。
数据卷挂载方式1【重点,常用】
包括挂载目录和挂载文件
宿主机挂载的目录和文件
1 | [root@docker01 ~]# mkdir -p /data/nginx_test2 # 在宿主机创建目录 |
宿主机操作
1 | # /data/nginx_test2:/data_volume_test2 目录挂载 前面:宿主机目录; 后面:容器目录 |
容器操作
1 | # 进入容器 |
数据卷挂载方式2【了解】
宿主机操作
1 | [root@docker01 ~]# docker run -d -v /data_volume --name nginx101 nginx:1.17 # 发布时,加入数据卷信息 -v /data_volume |
进入容器操作
1 | [root@docker01 ~]# docker exec -it nginx101 bash # 进入容器 |
查看容器的挂载信息
1 | root@594ea376d930:/# mount # 查看容器挂载信息 |
挂载主机目录【--mount】
包括挂载目录和挂载文件
宿主机挂载的目录和文件
1 | [root@docker01 ~]# mkdir -p /data/nginx_test3 # 在宿主机创建目录 |
宿主机操作
1 | [root@docker01 ~]# docker run -d --mount type=bind,source=/data/nginx_test3,target=/data_volume_test3 --mount type=bind,source=/etc/hosts,target=/etc/hosts --name nginx103 nginx:1.17 # 发布容器 |
容器操作
1 | # 进入容器 |
完毕!