docker筑基篇-02-镜像管理

[TOC]

1 镜像再探

docker镜像是由FileSystem叠加而成的。
和传统的linux一样,最底层是bootfs;之上是rootfs。

和linux不同的是,docker里的rootfs永远都是只读状态的。之所以你看起来像是修改了它(给它扩展新功能),是因为docker的联合加载技术(一次同时加载多个文件系统,并将各层文件系统的功能组合)。
有了联合加载技术,最终的文件系统就有了所有已经加载了的文件系统的功能。是不是感觉有点像面向对象的继承呢?

在实际使用中,一个docker镜像往往都是由另一个docker镜像扩展而来的。被扩展的那个镜像就称之为父镜像。最原始的那个父镜像被称为base image(基础镜像)。

看看这个经典的图吧:

image-layer

最上面那一层是可读写的。在容器第一次启动的时候,该层是空的。
当我们修改某个文件时,被修改的文件会从读写层下面的只读层复制到读写层。这样一来文件的只读版本还保留着,我们修改的只是一个副本,并将这个副本保留在了最上面的读写层,同时只读版本被读写层的文件隐藏了。

而这个正是docker的另一牛逼哄哄的特性写时复制
通过这种机制,每个只读层都是永远不会发生变化的了。当每次新建或扩展一个容器时,都会在容器栈的最顶层增加一个可写层。在可写层发生的变更隐藏掉底层的部分之后,各层在组合功能,从而扩展容器。

总感觉这东西真是和面向对象设计原则中的开闭原则不谋而合啊!!!
对修改关闭(除了第一层的可写层都是只读的),对扩展开放(在最顶层修改,扩展容器)。

2 基础命令

2.1 查看镜像

docker images
    -a, --all=true|false
        显示所有镜像。默认情况下,那些中间层的镜像不会被显示.The default is false.
    --digests=true|false
        Show image digests. The default is false.
    --no-trunc=true|false
        不会截断输出. The default is false.
    -f, --filter=[]
        带条件地列出镜像

镜像保存于仓库中,这里说的仓库有点类似于git的仓库。
一个仓库可以存储多个镜像,通过 TAG 来区分。
仓库存在于Registry中,默认情况下,Registry是DockerHub。

[root@h1 ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
csphere/centos                7.1                 e3a35d3b1588        46 hours ago        591.4 MB
hub.c.163.com/library/nginx   latest              b1d6e5f8fe92        5 days ago          181.4 MB
daocloud.io/centos            6                   eb24acd8692d        5 weeks ago         194.6 MB
centos                        latest              9baab0af79c4        5 weeks ago         196.7 MB
centos                        6.8                 80e46367f846        6 weeks ago         194.5 MB
centos                        centos7.1.1503      47a77536ad4c        6 weeks ago         212.1 MB
hello-world                   latest              f0cb9bdcaa69        3 months ago        1.848 kB
<none>                        <none>              151b45d87d28        23 months ago       859.5 MB
[root@h1 ~]#

[root@h1 ~]# docker images centos
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              9baab0af79c4        5 weeks ago         196.7 MB
centos              6.8                 80e46367f846        6 weeks ago         194.5 MB
centos              centos7.1.1503      47a77536ad4c        6 weeks ago         212.1 MB

2.2 拉取镜像

docker pull 命令其实就是下载镜像用的。默认情况下是从DockerHub下载。

当我们使用run命令来从一个镜像启动容器时,如果镜像不在本地,docker就会从DockerHub去pull该镜像对应的最新版本,即TAG为latest的版本。

docker pull
    -a, --all-tags=true|false
         Download all tagged images in the repository. The default is false.  
[root@h1 ~]# docker pull fedora
latest: Pulling from fedora
daf0c008c194: Pull complete 
daf0c008c194: Pulling fs layer 
Digest: sha256:3346e6e34f51fc00844fe87fd2cf3afe43d7e2f360fabedb56a7c81791958df1
Status: Downloaded newer image for fedora:latest

[root@h1 ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
csphere/centos                7.1                 e3a35d3b1588        46 hours ago        591.4 MB
hub.c.163.com/library/nginx   latest              b1d6e5f8fe92        5 days ago          181.4 MB
daocloud.io/centos            6                   eb24acd8692d        5 weeks ago         194.6 MB
centos                        latest              9baab0af79c4        5 weeks ago         196.7 MB
centos                        6.8                 80e46367f846        6 weeks ago         194.5 MB
centos                        centos7.1.1503      47a77536ad4c        6 weeks ago         212.1 MB
fedora                        latest              daf0c008c194        8 weeks ago         204.4 MB
hello-world                   latest              f0cb9bdcaa69        3 months ago        1.848 kB
<none>                        <none>              151b45d87d28        23 months ago       859.5 MB
[root@h1 ~]#

# 指定TAG
[root@h1 ~]# docker pull fedora:20
20: Pulling from fedora
a45be3b30145: Downloading [======>……
…………………………
…………………………

2.3 搜索镜像

这里指的搜索不是本地搜索,而是在远程的DockerHub上搜索。比如:

[root@h1 ~]# docker search nginx
NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                     Official build of Nginx.                        4345      [OK]       
jwilder/nginx-proxy       Automated Nginx reverse proxy for docker c...   827                  [OK]
richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable ...   286                  [OK]
million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   76                   [OK]
# ...............
[root@h1 ~]#

以上搜索结果的标题含义:

  • NAME:镜像所在仓库名,可以用它来pull镜像
  • DESCRIPTION:镜像描述
  • STARS:用户评价
  • OFFICIAL:是否是官方的
  • AUTOMATED:是否是使用自动构建流程创建的

2.4 删除镜像

docker rmi:删除指定镜像


# 删除fedora最新版的镜像
[root@h1 ~]# docker rmi -f fedora:latest
Untagged: fedora:latest
Deleted: daf0c008c194f2bae4f4bf36327d9166bc1dfa9fbbadb2ad585c1f11037fd787
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容