docker镜像和容器和存储

举报
黄生 发表于 2022/09/25 14:00:14 2022/09/25
【摘要】 Image的repository实际是名字,tag却是通常表示版本(多个标签也可能对应同一个镜像),不带tag,默认就是latestimage的ID是SHA256的摘要值,对配置文件(manifest)计算出的,这倒是不错。没有FROM指令,或是FROM scratch的Dockerfile所构建的镜像是基础镜像(base image)华为云容器镜像服务,有镜像加速器,配置好后可以检查doc...

Image的repository实际是名字,tag却是通常表示版本(多个标签也可能对应同一个镜像),不带tag,默认就是latest
image的ID是SHA256的摘要值,对配置文件(manifest)计算出的,这倒是不错。
没有FROM指令,或是FROM scratch的Dockerfile所构建的镜像是基础镜像(base image)

华为云容器镜像服务,有镜像加速器,配置好后可以检查docker info
Registry Mirrors:
https://08e8a7ac66000f3d0f6ec00af19568e0.mirror.swr.myhuaweicloud.com/

docker history看镜像构建历史,missing表示对应层不在本地构建也不可用,忽略之。

Dockerfile可以类比Makefile来理解
Register(Docker Hub)可以类比Git托管(GitHub)来理解

容器本质上是进程,但是与主机上的进程不同在于,它运行在自己的独立的名称空间内,因此在一个隔离的环境里。
自动生成的容器名称可以用 docker rename改名

容器与镜像的主要不同是容器在镜像上面多加一个可写层,其大小可以用docker ps -s查看
image.png

Copy-on-Write(CoW)写时拷贝。不写时直接访问。
要写时,先搜索,一次一层往下找,找到的第一个执行copy_up,拷贝到容器可写层,任何修改针对这个副本,底层的只读副本对容器不可见。

当attach到一个运行的容器(一般是detach/daemon方式运行的),要CTRL-C不停止容器,可以加参数 --sig-proxy=false。这是直接连接到容器启动命令的终端。当多个终端窗口同时attach,都会同步显示。
exec -it进入容器操作,是彼此独立的。这是打开新的终端,启动新的进程。

--sig-proxy            Proxy all received signals to the process (default true)

容器导出,就是快照,会丢失所以元数据和历史记录,仅保存容器当时的状态,相当于传统的虚拟机快照。
但是导入,是生成一个镜像,再基于镜像创建容器才完成容器的迁移。

docker commit可以从容器创建一个新的镜像。提交可写层的修改。

虽然容器有可写层,但是生产上数据是要使用Docker卷写入。
info看存储驱动。

 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true #目录条目类型
  Native Overlay Diff: true
  userxattr: false

image.png

可以用mount 看overlay存储驱动的挂载情况

使用卷,会绕过存储驱动。

image.png

卷、绑定、tmpfs这是3种挂载类型,区别在数据在主机中存放的位置的不同。
tmpfs是内存里。卷默认是/var/lib/docker/volumes里,由docker管理,非docker进程不能修改。绑定可以存储到主机系统的任何位置,可以用于共享配置文件(比如/etc/localtime挂载让容器的时区设置与主机一致 date +%z查看)等。

image.png

docker volume ls列出当前的卷

查看容器可写层大小,并格式化只显示感兴趣部分
docker ps --format "table {{.Image}}\t{{.Size}}"

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。