方式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