[049]Docker:命令行的两个小技巧

371次阅读  |  发布于2年以前

这节课我们介绍 Docker 命令行常用的两个小技巧。

第一个小技巧是对象 ID 的简写。

在 Docker 命令行中,要跟对象的 ID 时,只需取前几位就可以了,只要你能确定通过前几位查找它是唯一的就行,这个和 Git 是一样的。

请看下面的演示:

PS C:\Users\Liam> docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                     PORTS     NAMES
2871020b674c   nginx     "/docker-entrypoint.…"   8 minutes ago    Exited (0) 8 minutes ago             nervous_keller
dde5d9b26564   nginx     "/docker-entrypoint.…"   21 minutes ago   Exited (0) 9 minutes ago             zealous_kilby
PS C:\Users\Liam> docker rm 28
28
PS C:\Users\Liam> docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                      PORTS     NAMES
dde5d9b26564   nginx     "/docker-entrypoint.…"   22 minutes ago   Exited (0) 10 minutes ago             zealous_kilby

第二个小技巧是对象的批量操作。

有时候我们可能需要对多个容器执行相同的命令,比如有下面这些正在运行的容器:

如果要停止多个正在运行的容器,可以在 docker container stop 后面接上多个容器的 ID 或 NAME,比如:

docker container stop 4f 4c b5

这种操作对几个容器来说还好,但如果有几十个容器呢?

这里介绍一种命令行语法。使用命令行的 $() 语法可以将括号内的命令行输出作为参数传给另一个命令。比如我们对 docker container ls 命令使用 -q 参数,用来只打印当前正在运行的容器的 ID:

PS C:\Users\Liam> docker container ls -q
4ff9d9324a25
4c0c5c10f21c
b5bebd69a635
7822dfcd33ac
dde5d9b26564

如果我们要把这组 ID 传给另一个命令,则可以这样编写命令行:

PS C:\Users\Liam> docker container stop $(docker container ls -q)
4ff9d9324a25
4c0c5c10f21c
b5bebd69a635
7822dfcd33ac
dde5d9b26564
PS C:\Users\Liam> docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

这个命令会依次停止所有正在运行的容器。

同理,对于批量删除所有容器的操作,可以使用如下命令:

docker container rm $(docker container ls -aq)

在后面课程中我们还会学习更多的命令行技巧。下节课我将介绍 Docker 容器的两种运行模式。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8