分享 20 个 Docker 命令的使用场景
理解一项技术如何运行是最有效地学习和运用它的途径;当你使用 Docker 技术时,牢固地明白如下的现实。一个开发团队首次接受采纳 Docker 技术,一般都是被 Devops 推荐过来的。但是Devops 不会解释清楚一切,新使用 Docker 的开发团体如何能在现有系统中无风险地使用 Docker ,并且从中获益。
下面,你会找到开发者使用特定命令的场景、这些命令做了什么及命令演示。帮助你在建议你的公司开始实施 Docker 技术过程中,有效地打消开发团队的疑虑。
构建 docker 镜像 - -docker build
docker build --rm -t docker-examples:latest .
使用场景: 你的项目中没有 ‘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 材料。
详情: 删除所有不再使用的容器、网络、映像(所有挂起和未引用的),以及目录卷(可选)。
在 VS Code 中的快捷访问
删除 docker 映像 – docker rmi
docker rmi $(docker images -q)
使用场景: 需要释放更多的主机存储空间。
详情: 删除所有 docker 映像。
在容器中执行命令 – docker exec
docker exec -it container_name /bin/sh
使用场景: 当一个容器抛出 ‘get‘ 请求到 example.com 连接超时错误时。你可连接到它并在容器中运行诸如: curl
或 ping
命令。
详情: 在容器中运行指定命令或工具,且在容器环境中进行处理。非常有用的命令,用于在容器中排除故障及理解容器中发生的问题。
启动 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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。