Docker常用命令(一)

获取镜像

docker pull [选项] [Docker Registry 地址 [:端口号] / ] 仓库名 [:标签]

示例:

$ docker pull ubuntu:16.04

没有给出Docker镜像仓库地址,因此将会从Docker Hub中获取镜像

运行

$ docker run -it --rm \
  ubuntu:16.04 \
  bash

" \ "表示 换行

-it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm :这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm 。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
ubuntu:16.04 :这是指用 ubuntu:16.04 镜像为基础来启动容器。
bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。

列出镜像

//  列出所有已经下载的镜像
$ docker image ls
//  效果同上条命令
$ docker images

结果:

//仓库名                  标签                 镜像ID              创建时间        所占用的空间
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
ubuntu                   16.04               00fd29ccc6f1        3 weeks ago         111MB
laradock_redis           latest              19a977a11685        3 months ago        107MB
<none>                   <none>              a03f07cc3324        3 months ago        15.5MB
laradock_php-fpm         latest              f4ad9b641995        3 months ago        400MB
laradock_workspace       latest              318c7dc4d367        3 months ago        696MB
laradock_mysql           latest              59affc42159e        3 months ago        343MB
redis                    latest              b6dddb991dfa        3 months ago        107MB
mysql                    8.0                 6cfa8ff69d16        3 months ago        343MB

注:
1、这里的所占空间大小和 Docker Hub 上的镜像大小不同,Docker Hub 中显示的是压缩后的大小。

2、这里的所占空间大小总和,并非实际的硬盘的占有大小,因为Docker镜像是多层存储结构,并且可以继承、复用,因此不同镜像可使用相同的基础镜像。

中间层镜像

默认的 docker image ls 列表中,只会显示顶层镜像,

//  显示包括中间层镜像在内的所有镜像
$ docker image ls -a 

注:
这样会看到很多无标签的镜像,和之后的虚悬镜像不同,这些无标签的镜像很多都是中间层镜像,这些无标签镜像,不能删除,否则会导致上层镜像因为依赖丢失而出错。

列出部分镜像
//  根据仓库名列出镜像
$ docker image ls ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               00fd29ccc6f1        3 weeks ago         111MB
ubuntu              15.10               9b9cb95443b5        17 months ago       137MB

//  列出指定镜像
$ docker image ls ubuntu:16.04
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               00fd29ccc6f1        3 weeks ago         111MB

// 显示指定镜像之后的镜像列表(可比对之前的列表)
$ docker image ls -f since=redis
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
ubuntu               16.04               00fd29ccc6f1        3 weeks ago         111MB
laradock_redis       latest              19a977a11685        3 months ago        107MB
<none>               <none>              a03f07cc3324        3 months ago        15.5MB
laradock_php-fpm     latest              f4ad9b641995        3 months ago        400MB
laradock_workspace   latest              318c7dc4d367        3 months ago        696MB
laradock_mysql       latest              59affc42159e        3 months ago        343MB
//  查看之前也可以,把 since 换成 before即可
以特定格式显示
//  显示镜像ID
$ docker image ls -q
00fd29ccc6f1
19a977a11685
a03f07cc3324
f4ad9b641995
318c7dc4d367
59affc42159e

// 自定义结构(使用了Go的模板语法)
$ docker image ls --format "{{.ID}}: {{.Repository}}"
00fd29ccc6f1: ubuntu
19a977a11685: laradock_redis
a03f07cc3324: <none>
f4ad9b641995: laradock_php-fpm
318c7dc4d367: laradock_workspace
59affc42159e: laradock_mysql
b6dddb991dfa: redis

//  以表格等距显示,并且有标题行
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID            REPOSITORY               TAG
00fd29ccc6f1        ubuntu                   16.04
19a977a11685        laradock_redis           latest
a03f07cc3324        <none>                   <none>
f4ad9b641995        laradock_php-fpm         latest
318c7dc4d367        laradock_workspace       latest
59affc42159e        laradock_mysql           latest
b6dddb991dfa        redis                    latest

镜像、容器、数据卷所在空间

$ docker system df

注:因为需要统计的镜像的大小,所以执行会有些慢。

TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              19                  6                   2.339GB             2.133GB (91%)
Containers          19                  0                   292.9kB             292.9kB (100%)
Local Volumes       17                  0                   0B                  0B
Build Cache                                                 0B                  0B

虚悬镜像

上面的列表中,存在一个特殊的镜像,这个镜像既无仓库名也无标签,均为<none>。
这是由于新旧镜像同名,旧镜像名称被取消,所以出现仓库名、标签都为<none>的镜像,也就是虚悬镜像。

//  检索此类镜像
$ docker image ls -f dangling=true
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              a03f07cc3324        3 months ago        15.5MB

//  删除此类镜像
$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

注:
再次检索,可能还会有虚悬镜像存在,这是因为有其他镜像依赖。

删除本地镜像

$ docker image rm [选项] <镜像1> [<镜像2> ...]

<镜像>可以是镜像的ID(可以省略后面部分,但要有唯一性)、仓库名、摘要。

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
ubuntu                   16.04               00fd29ccc6f1        3 weeks ago         111MB
laradock_redis           latest              19a977a11685        3 months ago        107MB
<none>                   <none>              a03f07cc3324        3 months ago        15.5MB
laradock_php-fpm         latest              f4ad9b641995        3 months ago        400MB
laradock_workspace       latest              318c7dc4d367        3 months ago        696MB
laradock_mysql           latest              59affc42159e        3 months ago        343MB
redis                    latest              b6dddb991dfa        3 months ago        107MB

//  删除 laradock_mysql 镜像(取ID的前三个字符)
$ docker image rm 59a
Untagged: laradock_mysql:latest
Deleted: sha256:59affc42159e311116e8505d5012606607109ec7ad8c2c5219fa05c3e1908d2d
Deleted: sha256:3cc7addd185366686786b581d02d88974978b45ecfbe9e836545271d3e7591e0
Deleted: sha256:295affe1cbf149bd05360a6fb9411d575506450f545ce69c08ce700ee341225f
Deleted: sha256:40ff835efbee0a844c96ccb695cb99c4d1f22d44e78ba8cc210423323935f81e
Deleted: sha256:cdb003b7b07a3b2d7809b31d25a77f3ed65bc1dc066f8f4868e5a86e9a77c723
Deleted: sha256:7a38549437804e837bd3cd5073555ce806640a654e011cc8933fb61974b5b2bc
Deleted: sha256:54661a4bf02571f947385c6c1216d9207a54af5127390364c51499df93695717
Deleted: sha256:ebc2d72325235c58372407b2c85c57d514253b88f6f01ecbadd4387f845d7306
Deleted: sha256:a6daead3b1372f15bd02b3e7512ef11030bd2b7d3b641fb54aade329ddb267f7
Deleted: sha256:9689cfa85ce950b075b93d888b105e2aca2b2eed658732a31e20594fcf0ef404

//  使用镜像名删除
$ docker image rm laradock_workspace

//  查看镜像摘要
$ docker image ls --digests
REPOSITORY               TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
ubuntu                   16.04               sha256:fbaf303d18563e57a3c1a0005356ad102509b60884f3aa89ef9a90c0ea5d1212   00fd29ccc6f1        3 weeks ago         111MB
laradock_redis           latest              <none>                                                                    19a977a11685        3 months ago        107MB
<none>                   <none>              <none>                                                                    a03f07cc3324        3 months ago        15.5MB
laradock_php-fpm         latest              <none>                                                                    f4ad9b641995        3 months ago        400MB
laradock_workspace       latest              <none>                                                                    318c7dc4d367        3 months ago        696MB
redis                    latest              sha256:472c9a984607e6194dc2e645d23907738b77bf76ea0abcf870cbde741d5f650a   b6dddb991dfa        3 months ago        107MB

注:
上面命令的运行输出信息
Untagged :表示满足删除条件的镜像标签,都取消,因为一个镜像可以有多个标签,只有当这个镜像的所有标签都取消了,才对触发删除操作,也就是 Deleted 表示的意思。考虑到Docker的多层存储结构,就算是删除操作,也只会删除没有任何镜像的依赖的层。

使用docker image ls 命令配合删除
//  删除所有仓库名为 laradock_php-fpm 的镜像
$ docker image rm $(docker image ls -q laradock_php-fpm)
//  $(docker image ls -q laradock_php-fpm)   返回的是 laradock_php-fpm 镜像的ID
//  注意 -q 的功能,所以是删除指定 ID 的镜像

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

推荐阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,540评论 15 147
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,505评论 0 120
  • 原文在此 获取镜像 之前提到过,Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜...
    若与阅读 1,872评论 1 5
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,391评论 0 27
  • 外婆是我成年以后,第一个故去的亲人。 亲爱的外婆 外婆去世的那天很蹊跷,当时我在学校准备研究生的复试,平时一个月才...
    不系之舟的船长阅读 74评论 0 0