这就是我想要的!反向查找 Docker 命令

GRED 网络篡改检查云

大家好,
我是Mandai,Wild团队负责开发工作的成员。

我经常忘记 Docker 命令,所以一气之下就把这些命令记了下来。
现在我再也不会忘记了。


 

获取 Docker 镜像列表

Docker镜像

 

获取 Docker 容器列表

# 仅显示当前正在运行的 Docker 容器 docker ps # 显示所有 Docker 容器(包括已停止的 Docker 容器) docker ps -a # 仅显示 Docker 容器 ID docker ps -q

 
“docker ps -q”本身没有用处,但在批量删除docker容器时很有用。

一开始可能很难想象 Docker 镜像和 Docker 容器之间的区别,但这就像物理 CD 和 ISO 文件之间的关系(这很难理解)。

 

命名并启动 Docker 容器

docker run --name [容器名称]

 
如果给 Docker 容器命名,则必须先使用“docker rm”命令将其删除,然后才能启动同名的 Docker 容器。

 

在 Docker 容器和主机之间共享文件

docker run -v [主机目录路径]:[docker 容器目录路径]

 

端口转发,使 Docker 容器端口在主机上可用。

docker run -p [主机端口号]:[docker 容器端口号]

 

连接 Docker 容器

docker run -link [docker 容器名称或 ID][:[别名]]

 
当你的 Docker 容器没有名称,或者 Docker 容器名称非常长时,别名就很有用。

其机制很简单,就是使用 hosts 文件。如果您比较 hosts 文件,您会看到以下内容:

# 启动要连接的 MySQL 容器 $ docker run -d --name test -e MYSQL_ROOT_PASSWORD=root mysql:latest 529c5facaed9694dbcb36e9e3d3eae0350e26e182f70c72b06d2914dcf8c0222 # 使用链接目标中指定的名称和别名启动 Docker 容器 $ docker run -it --link test:db php:latest cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 db 529c5facaed9 test 172.17.0.4 ffae57a81bc1 # 仅指定名称作为链接目标启动 Docker 容器 $ docker run -it --link test php:latest cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 test 529c5facaed9 172.17.0.4 128c598dea8a

 
区别在于别名是否列在 hosts 文件中。

 

以分离模式启动 Docker 容器

docker run -d [docker 镜像名称]

 
分离模式意味着程序在后台运行,无需进入容器。
我完全把它和守护进程(daemon)中的“d”混淆了。

 

在前台运行 Docker 容器并运行任何命令

docker run [docker 镜像名称] [命令] 

 

在前台启动一个 Docker 容器,并连接到该 Docker 容器。

docker run -it [docker 镜像名称] [任何 shell,例如 /bin/bash]

 
`-i` 选项会连接标准输入 (STDIN)。这意味着控制台的输入将被流式传输到指定的 Docker 容器中。
如果您使用 `docker run -i hogehoge /bin/bash`,则可以执行控制台命令,但这些命令不会显示在屏幕上。

`-t` 选项会为 Docker 容器分配一个 TTY(Time Typer Timer,时间输入器)。如果没有这个选项,即使你连接到 Docker 容器,也无法看到容器内部的控制台。
如果你运行 `docker run -t hogehoge /bin/bash`,你会看到 Docker 容器内的提示符,但你的输入不会显示在屏幕上。

因此,要在 Docker 容器内工作,您需要以上两种选项。

 

在 Docker 容器启动时设置环境变量

docker run -e [变量名=值]

 
这样就可以指定 MySQL 的 root 密码了。

docker run -e MYSQL_ROOT_PASSWORD=root

 

连接到正在运行的 Docker 容器

docker attach [docker 容器 ID]

 
要从 Docker 容器中分离,请使用快捷键 CTRL + P,Q 返回主机。

 

我想在 Docker 容器中运行 shell 命令。

docker exec [docker 容器 ID] [/bin/bash 或其他要启动的 shell]

 

我想停止一个 Docker 容器

docker stop [docker 容器 ID]

 

我想删除一个 Docker 容器

docker rm [docker 容器 ID]

 

我想删除所有 Docker 容器。

docker rm $(docker ps -aq)

 
这是在子 shell 中获取 Docker 容器 ID 的一种方法。`docker ps` 命令的 `-q` 选项是最佳使用场景。

 

我想删除一个 Docker 镜像。

docker rmi [docker 镜像名称]

 

我想了解 Docker 容器的相关信息

docker inspect [docker 容器 ID]

 

如果您想获取 Docker 容器使用的 IP 地址(这会附带一些额外信息,但足以达到目的),

docker inspect [docker container ID] | grep IPAddress

 

 
就这样。

如果您觉得这篇文章对您有帮助,请点个“赞”!
2
加载中...
2票,平均分:1.00/12
8,071
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但幸运的是,我也有机会参与其他各种任务,包括市场营销。
我在Beyond中的图像版权采用CC0协议。