为了账号安全,请及时绑定邮箱和手机立即绑定

Docker常用命令(一)

标签:
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.04REPOSITORY          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 -q00fd29ccc6f119a977a11685
a03f07cc3324
f4ad9b641995318c7dc4d36759affc42159e// 自定义结构(使用了Go的模板语法)$ docker image ls --format "{{.ID}}: {{.Repository}}"00fd29ccc6f1: ubuntu19a977a11685: laradock_redis
a03f07cc3324: <none>
f4ad9b641995: laradock_php-fpm318c7dc4d367: laradock_workspace59affc42159e: laradock_mysql
b6dddb991dfa: redis//  以表格等距显示,并且有标题行$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"IMAGE ID            REPOSITORY               TAG00fd29ccc6f1        ubuntu                   16.0419a977a11685        laradock_redis           latest
a03f07cc3324        <none>                   <none>
f4ad9b641995        laradock_php-fpm         latest318c7dc4d367        laradock_workspace       latest59affc42159e        laradock_mysql           latest
b6dddb991dfa        redis                    latest

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

$ docker system df

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

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

虚悬镜像

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

//  检索此类镜像$ docker image ls -f dangling=trueREPOSITORY          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)



作者:不器不争
链接:https://www.jianshu.com/p/e2ce48821824


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消