Docker笔记(初级篇)
Docker镜像
一些需要了解的概念
- Docker镜像是分层的联合文件系统,每一层都可以复用。
- Docker镜像层都是只读的,容器层是可写的。
- Docker容器启动时,一个新的可写镜像被加载到顶部,这一层即为”容器层”,”容器层”之下的都叫”镜像层”。
- Docker中对容器的改动,不会影响只读的镜像。因此镜像具有复用性,一个镜像可实例出多个可写的容器。
也就是说, 如果基于目前状态的可写容器层, 向下提交出一个新的只读层, 那么我们就获得了一个基于当前容器的只读”镜像”。
基于当前容器生成一个镜像
docker commit -m=”描述” -a=”作者” 容器ID 生成镜像的名称:标签号
镜像发布
- 要先将镜像加上用户名,不然push时docker无法确认目标仓库。
1 | docker tag 源镜像名:tag 用户名/修改后的镜像名:Tag |
这一步之后,镜像仓库里会新生成一个名字为用户名/修改后的镜像名
的镜像,标签为Tag
- 推送至服务器(
注意推送的是刚才tag后新生成的那个推送版本
)
1 | docker push 用户名/修改后的镜像名:Tag |
容器数据卷
由于容器数据卷涉及到盘符挂载, 因此记得加入参数
--privileged=true
, 防止因权限不够而导致无法运行带有容器卷存储功能的容器实例。容器数据卷,有点类似Redis里面的rdb和aof文件,作用: 将docker容器内的数据持续实时地保存进宿主机的磁盘中。
docker run -it –privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
通过
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
命令后,即可成功运行一个带有容器数据卷功能的容器实例。本容器实例内的数据卷目录下文件发生更改,将自动同步至主机,反之亦然; 若在本容器实例停止运行时,主机源数据卷目录发生更改, 待容器恢复运行, 更改依然会自动同步至容器实例内的数据卷目录下。
查询容器的挂载信息
docker inspect 容器ID
在内部有个”Mounts”的key,对于的value中存在 “Source”与”Destination”两个key,其值即代表系统的源挂载目录和目标容器内的目录。
带有自定义规则的容器数据卷
读写: docker run -it –privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
只读: docker run -it –privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
卷的继承和共享
docker run -it –privileged=true –volumes-from 父类容器名 –name u2 ubuntu
轻松实现了多服务间数据的共享
参考
[1] Docker与微服务实战笔记-朋友转发文档,未溯源
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 道远日暮时不存!