commit镜像
docker commit 提交容器成为一个新的副本
docker commit -a="作者" -m="提交的描述信息" 容器id 目标镜像名字:[tag]
实战测试
docker pull tomcat
docker run -d -p 3355:8080 --name tomcat01 tomcat
docker exec -it tomcat01 /bin/bash
cp -r webapps.dist/* webapps
docker commit -a="wkf" -m="add webapps app" 7fc2d95fbc60 tomcat02:1.0
总结一下
如果想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像
容器数据卷
容器的持久化和同步操作!容器之间也是可以共享
方式一:直接使用命令挂载 -v
docker run -it -v 主机目录:容器内目录
[root@wkf home]
[root@wkf ~]
测试文件之间的同步
关闭容器再测试
1、停止容器
2、宿主机上修改文件
3、启动容器
4、观察容器内的数据是否同步
具名和匿名挂载
匿名挂载
-v 容器内路径
docker run -d -p 3344:80 --name nginx01 -v /etc/nginx nginx
[root@wkf980120 conf]
DRIVER VOLUME NAME
local 3cb391132ed39233e743896fda97b833fbd3afd4825b35815f04f1b7c4e58d9f
具名挂载
-v 卷名:容器内路径
docker run -d -p 3345:80 --name nginx02 -v rela-nginx:/etc/nginx nginx
[root@wkf980120 conf]
DRIVER VOLUME NAME
local rela-nginx
[root@wkf980120 conf]
[
{
"CreatedAt": "2022-07-10T21:01:56+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/rela-nginx/_data",
"Name": "rela-nginx",
"Options": null,
"Scope": "local"
}
]
所有的docker容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/xxxx/_data
通过具名挂载可以方便的查询找到我们的卷,大多数情况使用具名挂载
-v 容器内路径
-v 卷名:容器内路径
-v /宿主机路径:容器内路径
拓展:
ro read only
rw read write
docker run -d -p 3345:80 --name nginx02 -v rela-nginx:/etc/nginx:ro nginx
docker run -d -p 3345:80 --name nginx02 -v rela-nginx:/etc/nginx:rw nginx
Dockerfile挂载
Dockerfile 就是用来构建 docker镜像的构建文件! 命令脚本
通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令,每个命令就是一层!
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "-----end-----"
CMD /bin/bash
docker build -f dockerfile1 -t wkf/centos:1.0 .
查看创建的镜像
数据卷容器
多个容器之间的数据同步 --volumes-from
1、启动第一个容器
docker run -it --name docker01 wkf/centos:1.0
2、启动第二个容器
docker run -it --name docker02 --volumes-from docker01 wkf/centos:1.0
3、在docker01 中的volume01 中创建文件,发现直接同步到docker02
实现两个mysql之间数据共享
[root@wkf ~]
[root@wkf ~]
结论
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。
但是一旦持久化到了本地,本地的数据是不会被删除的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)