1. 概述
Docker 提供了一个有用的 CLI 来与容器交互。在这篇教程中,我们将看到 run
和 start
命令,并通过一些实用示例突出它们之间的不同之处。
2. 运行容器
Docker 的 run 命令结合了其 create 和 start 命令的功能。它创建一个特定镜像上的容器,然后启动它。例如,让我们运行一个 Postgres 容器:
docker run --name postgres_example -p 5432:5432 -v /volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=my_password -d postgres
让我们通过 docker ps 查看正在运行的容器列表:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52b7c79bfaa8 postgres "docker-entrypoint.s…" 22 seconds ago Up 20 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres_example
如果使用 *docker logs*,我们还可以查看已启动容器的更多信息,如:
starting PostgreSQL 13.2
listening on IPv4 address "0.0.0.0", port 5432
listening on IPv6 address "::", port 5432
listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
database system is ready to accept connections
3. 启动容器
Docker 的 start 命令用于启动已停止的容器。容器可以因多种原因停止 - 例如,当它消耗了过多内存并被主机操作系统杀死时。
为了演示这一点,让我们手动停止之前创建的容器:
docker stop 52b7c79bfaa8
在这种情况下,我们的运行列表将显示一个已退出的容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52b7c79bfaa8 postgres "docker-entrypoint.s…" 2 minutes ago Exited (0) 2 seconds ago 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres_example
让我们也查看日志:
received fast shutdown request
aborting any active transactions
shutting down
database system is shut down
如果容器已关闭,我们可能希望使用 docker start 再次启动它:
docker start 52b7c79bfaa8
如果在启动容器时没有出现错误,则我们会恢复到运行容器的状态。Docker 还提供了 docker restart 命令,该命令将 stop 和 start 结合成一个命令。
4. 总结
在这篇教程中,我们简要讨论了 Docker 中的 run 和 start 命令。
我们通过 docker run 的示例看到了如何运行容器。如果容器停止运行,我们可以使用 docker start 再次启动它。