方式1:

直接将容器打包,使用docker commit + docker save。将整个容器所有东西都进行保存。

方式2:

使用数据卷。

数据卷介绍:

​ 宿主机中的某个文件/目录与容器内的某个文件/目录进行关联,宿主机/容器内对这个文件/目录进行修改都会实时同步。

*只支持容器启动时挂载,后期想挂载不允许。只能另辟蹊径。

挂载方式

docker run --name test-volume -d -p 8080:8080 -v ./data:/usr/src/data tomcat:8.5.49

启动容器,设置容器名称,后台运行,端口映射,数据卷挂载,所用容器。

注意:挂载路径要么绝对路径,比如:/home/wyl/docker_data:/usr/src/data;要么相对路径./data:/usr/src/data。不能出现这种写法:data:/usr/src/data。这种写法会出现挂载问题。

只读方式

docker run -dp 8080:8080 -v ./data:/user/src/data:ro tomcat:8.5.49

在路径后面加ro(read only)

注意:这个操作是针对容器内部的。./data:ro:/user/src/data这种方式错的,不能这么操作。加上这个操作之后,容器内部就不能进行文件写/创建操作。防止容器往文件乱写数据

数据卷共享

**方式1:**两个容器的数据都挂载到同一个宿主机目录。

docker run -dp 8080:8080 -v ./data:/user/src/data:ro tomcat:8.5.49
docker run -dp 8080:8080 -v ./data:/user/src/data:ro tomcat:8.5.49

**方式2:**使用数据卷volume方式。

这里创建了两个nginx应用。同时挂载到同一个数据卷html和nginx_conf。他们的数据是共享的。

docker run --name nginx1 -dp 82:80 -v html:/usr/share/nginx/html -v nginx_conf:/etc/nginx nginx:latest
docker run --name nginx2 -dp 82:80 -v html:/usr/share/nginx/html -v nginx_conf:/etc/nginx nginx:latest