COMMIT
commit镜像
commit镜像:可以将修改过的容器重新打包成一个镜像,下次使用时,直接使用这个镜像即可。
docker commit 提交容器成为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器ID 目标镜像名:[TAG]
可以用docker images查看到提交的镜像
容器数据卷
docker理念
将应用和环境打包成一个镜像
如果数据都在容器中,那么我们删除容器,数据就会丢失。需求:数据可以持久化,将数据存储在本地!
容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!
这就是卷技术!!!目录的挂载,将我们容器内的目录挂载到Linux上面!!!
总结:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷
方式一:直接使用命令来挂载 -v
docker run -it -v 主机目录:容器内目录
# 调试 zza@zza:~$ docker run -it -v /home/ceshi:/home ubuntu:16.04 /bin/bash # 启动起来的时候我们可以通过 docker inspect 容器id 来查看挂载是否成功
可以在挂载的文件夹里创建一个文件来测试是否真的挂载成功。
好处:以后修改只需要在本地进行修改即可,容器内会自动同步!
具名挂载和匿名挂载
1.匿名挂载: -v 容器内路径
docker run -d -P --name ubuntu01 -v /etc/ubuntu ubuntu:16.04
查看所有volume的情况
docker volume ls
匿名挂载就是在 -v 只写了容器内的路径,没有写容器外的路径!
2.具名挂载: -v 卷名:容器内路径
docker run -d -P --name ubuntu02 -v juming-ubuntu:/etc/ubuntu ubuntu:16.04
查看所有volume的情况
docker volume ls
可以查看卷的具体信息
docker volume inspect juming-ubuntu
所有的docker容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/xxxx/_data
我们通过具名挂载可以方便的找到我们的一个卷,大多数情况使用具名挂载!
# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载! -v 容器内路径 # 匿名挂载 -v 卷名:容器内路径 # 具名挂载 -v /宿主机路径:容器内路径 # 指定路径挂载
扩展:
# 通过 -v 容器内路径:ro rw 改变读取权限
ro readonly # 只读
rw readwrite # 可读可写
# 一旦这个设置了容器权限,容器对我们挂载出来的内容就有了限定
docker run -d -P --name ubuntu02 -v juming-ubuntu:/etc/ubuntu:ro ubuntu:16.04
docker run -d -P --name ubuntu02 -v juming-ubuntu:/etc/ubuntu:rw ubuntu:16.04
# ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法按操作的!
Dockerfile