分享 20 个 Docker 命令的使用场景

Docker

理解一项技术如何运行是最有效地学习和运用它的途径;当你使用 Docker 技术时,牢固地明白如下的现实。一个开发团队首次接受采纳 Docker 技术,一般都是被 Devops 推荐过来的。但是Devops 不会解释清楚一切,新使用 Docker 的开发团体如何能在现有系统中无风险地使用 Docker ,并且从中获益。

下面,你会找到开发者使用特定命令的场景、这些命令做了什么及命令演示。帮助你在建议你的公司开始实施 Docker 技术过程中,有效地打消开发团队的疑虑。

构建 docker 镜像 - -docker build

docker build --rm -t docker-examples:latest .

Docker

使用场景: 你的项目中没有 ‘docker-compose‘ 文件,仅有 ‘dockerfile‘ 文件。你想运行你的 docker 服务,首先要构建(build)它。

详情: 依 ‘dockerfile‘ 文件的配置构建 docker 映像(image)。
--rm 命令选项指定在成功构建后,删除其间产生的启动的容器。若无此命令选项,命令完成后,你将在你的容器列表中看到类似的如下图所示内容:

-t 标记你创建的 docker 映像的标签名称,不然,你在众多镜像中找出它会很困难。如下图所示:

在 VS Code 中的快捷访问

docker build --rm -t --no-cache docker-examples:latest .

使用场景: 你没有指定依赖包的版本却要更新到最新的版本,但你没在 dockerfile 文件中改变配置且 Docker 固定地使用其缓冲层。

详情: 强制 Docker 从头重建映像。

启动运行 docker 镜像 – docker run

docker run -d -p 4000:3000 docker-examples:latest

使用场景: 你已经构建了一个 Docker 镜像且想启动运行它。应用中你将容器中的 3000 端口映射到主机的 4000 端口。

详情:
-d 后台运行容器且输出启动的容器 ID 。
-p 执行容器的端口映射,命令格式:’主机端口:容器端口‘ 。本例中见命令中的 ‘4000:3000‘ 。

在 VS Code 中的快捷访问

docker run docker-examples:latest

使用场景: 在主机终端中启动运行 Docker 镜像,且观察和控制其启动运行过程。快捷键 Ctrl+C 终止并退出容器的运行。

docker run -t -i docker-examples:latest node

使用场景: 欲在容器中运行指定的命令或工具,使用本命令,将会启动运行一个新的容器实例。如图所示例子中,启动了容器中的 node.js 控制台交互程序。若想与已经启动运行的容器进行交互,参考 docker exec 命令。

停止指定容器的运行 – docker stop

docker stop container_name

使用场景: 需要停止已启动运行的容器。

详情: 可通过 docker ps -a 命令找到运行中的容器名称。

在 VS Code 中的快捷访问

docker stop $(docker ps -a -q)

举例: 停止运行所有的容器。

查看所有运行的容器 – docker ps

docker ps -a

使用场景: 查看容器列表,找到想停止的容器名称。也可查看容器运行状态及其映射的端口。

在 VS Code 中的快捷访问

输出显示容器运行日志 – docker logs

docker logs -f container_name

使用场景: 你的服务容器启动中崩溃,想知道其原因。也可通过查看服务容器的日志,对其运行有个基础的了解。

详情: 查看指定容器日志;可运用在运行或停止的容器上。-f 命令选项打开其日志持续输出。

在 VS Code 中的快捷访问

关闭容器的运行 – docker kill

docker kill $(docker ps -q)

使用场景: 对 Docker 容器运行失望且阅读了解其相关的一切。

详情: 关闭所有容器的运行。

删除停止的容器 – docker rm

docker rm $(docker ps -a -q)

使用场景: 清理混乱的容器列表。

详情: 删除所有停止运行的容器。

docker 系统管理 – docker system

docker system prune

Docker

使用场景 你想清理不再使用的 docker 材料。

详情: 删除所有不再使用的容器、网络、映像(所有挂起和未引用的),以及目录卷(可选)。

在 VS Code 中的快捷访问

删除 docker 映像 – docker rmi

docker rmi $(docker images -q)

使用场景: 需要释放更多的主机存储空间。

详情: 删除所有 docker 映像。

在容器中执行命令 – docker exec

docker exec -it container_name /bin/sh

使用场景: 当一个容器抛出 ‘get‘ 请求到 example.com 连接超时错误时。你可连接到它并在容器中运行诸如: curlping 命令。

详情: 在容器中运行指定命令或工具,且在容器环境中进行处理。非常有用的命令,用于在容器中排除故障及理解容器中发生的问题。

启动 docker-compose – docker-compose up

docker-compose up

使用场景: 有一个配置了多个服务的 ‘docker-compose‘ 文件,你想构建和运行这些服务容器并观察其输出。

docker-compose up -d

使用场景: 后台构建和运行所有由 docker-compose 配置的服务容器且在之后观察它们的运行状态。

在 VS Code 中的快捷访问

docker-compose up -d example-service-1

使用场景: 后台启动在 docker-compose 文件中配置的某个指定的服务容器,这样会使启动的服务容器按照 docker-compose 文件中配置的映射端口、挂载卷等动作启动。

停止 docker-compose 服务族的运行 – docker-compose down

docker-compose down

使用场景: 需要停止所有在 docker-compose 文件中配置的服务容器。这将停止docker-compose 中配置的每个服务容器,及其相关的网络、目录卷、及通过 ip 构建的映像。 这有助于想在干净的状态下开始运行项目。

执行 docker-compose 服务任务 – docker-compose run

docker-compose run example_app rails db:migrate

使用场景: 需要 docker-compose 服务群执行特定的任务,诸如,迁移或测试任务。可以使用与 docker run 类似的命令方法,除了执行任务的服务来自 docker-compose 配置中的服务容器。注意的是,这里使用的 run 接口,将使在 docker-compose 文件中配置的那些在执行任务中使用不到的端口映射不进行映射。

在 docker-compose 配置的容器中执行命令 – docker-compose exec

docker-compose exec example_app node

使用场景: 欲访问到服务容器内部且执行类似 docker exec 的命令。不同的是通过 docker-compose 中配置的服务容器名进行访问。对于排除故障、测试网络、检查现存容器中的所有数据等任务十分有用。

docker-compose 日志 – docker-compose logs

docker-compose logs -f container_name

使用场景: 你的服务在启动时崩溃,你想知道原因。

详情: 查看指定的服务容器日志,对于运行中和停止的服务容器都有效。与 docker logs 命令不同的是,这里使用 ‘docker-compose‘ 中配置的服务名称替换具体容器名称。
-f 命令选项保持日志的持续输出。

停止 docker-compose 服务的运行 – docker-compose stop

docker-compose stop example_app 

使用场景: 欲停止 docker-compose 配置的服务或其服务容器。

重启 docker-compose 配置的服务 – docker-compose restart

docker-compose restart example_app 

使用场景:欲重启 docker-compose 配置的服务或其服务容器。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://dev.to/digitalocean/how-to-build...

译文地址:https://learnku.com/server/t/41857

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!