1. 概述

Docker 提供了一个有用的 CLI 来与容器交互。在这篇教程中,我们将看到 runstart 命令,并通过一些实用示例突出它们之间的不同之处。

2. 运行容器

Docker 的 run 命令结合了其 createstart 命令的功能。它创建一个特定镜像上的容器,然后启动它。例如,让我们运行一个 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 命令,该命令将 stopstart 结合成一个命令。

4. 总结

在这篇教程中,我们简要讨论了 Docker 中的 runstart 命令。

我们通过 docker run 的示例看到了如何运行容器。如果容器停止运行,我们可以使用 docker start 再次启动它。