docker 核心概念整理

一、镜像(Image) vs Dockerfile

1、docker在镜像(image)中运行你的代码,而不是Dockerfile,镜像文件就是从Dockerfile编译而得到的不透明资产

2、dockerfile是通过docker build命令来编译镜像的配置文件,当你用docker push命令发布自己的镜像的时候,你发布的不是任何你的代码,而是由你的代码编译出来的镜像文件


二、注册表(Registry) vs 索引(Index)

注册表(镜像注册表,registry)和索引(镜像索引,index)这两个概念,以及它们的区别也很特殊。

一个索引用来管理用户账号,权限,搜索,打标签,以及其它可以方便的通过Web界面来完成的工作。

一个注册表则是真正的用来保存、提供镜像文件的概念。它通过索引来完成用户认证步骤。

当你执行docker search命令的时候,Docker会到index里执行查找工作,而不是registry。从实际上来说,Docker会在索引(index)所知道的多个注册表(registry)中进行查找。

而当你执行docker push 或者 docker pull操作的时候,index会判断你是否有权限访问或者修改该镜像文件,如果通过index的认证操作的话,registry则进行实际的镜像存储工作或者将镜像文件发送给请求端。同样,index会知道你想访问的镜像的存储位置(哪个registry上),然后将访问请求转向到相应的registry。


三、镜像仓库(Repository )

Docker 使用类似于Github或者其他SCM工具的仓库概念。当然,它们也不完全等价。

实际上,这是一个问题,因为镜像仓库是所有这些概念的合集,而不是单独的任何一个


四、docker image本机上的本地存储位置

docker images命令显示的内容都是本机上存在的资源,那我这些资源到底会在哪里呢,那我们来看看/var/lib/docker这个文件夹下的内容:

[root@docker docker]# cd /var/lib/docker/
[root@docker docker]# ll repositories*
-rw——- 1 root root 1047 Sep 21 10:22 repositories-aufs
-rw——- 1 root root 1050 Sep 25 01:37 repositories-devicemapper

我们可以看到在该目录下有两个文件

cat repositories-devicemapper | python -mjson.tool
cat repositories-aufs | python -mjson.tool

其实两个文件都保存着镜像的信息。如果仔细辨认,你会发现:

repositories-devicemapper里面保存的是当前存在的本地镜像的信息
你每pull一个镜像下来,里面就会增加一段信息,例如这样:

"192.168.0.216:5000/httpd": {
            "latest": "35972236645ab46a8cc3ff24fc39ed43e259134de5ff1a3216726eab3e2827c2"
        },

repositories-aufs文件中保存的则是镜像仓库的信息。

你会发现/var/lib/docker下面还有一个文件夹graph
那我们来看看/var/lib/docker/graph下面有什么东西!

ls -l /var/lib/docker/graph/

下面有许许多多的文件夹,没错,那就是Images ID,并且是你曾经使用过的Images ID信息,还有layer,也许你在pull images的时候会发现,它在期间download layer。

drwx------   2 root root  4096 Sep 21 11:43 f912d1b83a6c5f0d6409083fed731e5963aeb05ff2832f5e4899929f99ed86a1
drwx------   2 root root  4096 Sep 15 09:03 f94304dc94e325bb13db375898780bec04fc83362381d6b8476ab288287e5d9a
drwx------   2 root root  4096 Sep 15 08:59 f972ade4c9d5f9863b782ee685c8ec80da9bdb8e43834919214dd68d501687f0
drwx------   2 root root  4096 Sep 21 12:04 f9a8cbc8dd13fb5bdbcff050cbeee76cc8c967a9ab2122714d00090c5815d385
drwx------   2 root root  4096 Sep 15 09:47 f9bff7d0d06e65f89dce91e43caefc3fe090818bae24d67c9732bd4a7ada19dc
drwx------   2 root root  4096 Sep 15 09:00 fe0e725486e9d7c95ff25b7ae77801187f60fb29aa15e916d5364485e94b3f18
drwx------   2 root root  4096 Sep 15 09:47 ff0618bc0767411abb6b6f28200a67614fea418483f3faa5d649d92b53627e43

我们进入其中一个Images ID 文件夹里面

cd a68ca3ab3814f42c708499ff9ced589f465239912d3b27eea0bd04a9785dccfa/
ls
json layersize

里面有两个文件,json and layersize。那么这个json呢,就是当前Images的详细信息,而这个layersize呢,是一个整数,表示layer的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值