这节课我们介绍 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