Docker Run vs Start vs Create:差异解释

如果您是 Docker 新手并通过各种教程学习它,您可能会遇到诸如启动 docker 容器、运行 docker 容器或创建 docker 容器之类的术语。

这些术语足以让 docker 初学者感到困惑,因为所有三个 docker 命令看起来都很相似。

实际上,要区分 docker run 和 docker start 是特别困难的。

运行容器与启动容器不一样吗? 并不真地。

让我给你解释一下。

Docker run、Docker start 和 Docker create 的区别

以下是这些命令的作用:

Docker 创建命令 从 docker 镜像创建一个全新的容器。 但是,它不会立即运行它。

Docker 启动命令 将启动任何停止的容器。 如果您使用 docker create 命令创建容器,则可以使用此命令启动它。

码头工人运行命令 是 create 和 start 的组合,因为它创建一个新容器并立即启动它。 事实上,如果 docker run 命令在您的系统上找不到上述镜像,它甚至可以从 Docker Hub 拉取镜像。

让我们用例子来看看,这样你就更清楚了。

让我们用例子来看看

如果要按照示例进行操作,请确保已安装 Docker。

假设您使用 docker pull ubuntu 命令从 Docker Hub 下载 Ubuntu 映像。

您可以查看系统上所有可用的 docker 映像。 我只有ubuntu example (为避免混淆):

[email protected]:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              775349758637        5 weeks ago         64.2MB

现在,创建一个名为 container-1 的新 docker 容器,其中 docker 创建命令

[email protected]:~$ docker create --name container-1 ubuntu
2d9a8c190e6c9b3cbbc032a87762bfbc92f1dc0dd30abbe9bdb3ed7e74a6480f

你可以看到它已经创建了一个新的容器。 如果您尝试查看所有正在运行的容器,您将看不到 container-1,因为尽管它已创建,但它从未启动过。

[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

如果您检查所有容器,无论它们是否正在运行,您都会看到 container-1 处于 Created 状态:

[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2d9a8c190e6c        ubuntu              "/bin/bash"         18 seconds ago      Created                                 container-1

现在让我们使用 码头工人运行命令 创建并运行一个名为 container-2 的容器:

[email protected]:~$ docker run -it -d --name container-2 ubuntu bash
13dc0f4226dc8d9d86e41d927c5616654d8263da2cc8c667aaa5b4dbd7f7e9b3

您可以看到 container-2 正在运行,其状态为 Up:

[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
13dc0f4226dc        ubuntu              "bash"              About a minute ago   Up About a minute                       container-2

让我们停止这个正在运行的容器:

[email protected]:~$ docker stop container-2
container-2
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
13dc0f4226dc        ubuntu              "bash"              2 minutes ago       Exited (0) 28 seconds ago                       container-2
2d9a8c190e6c        ubuntu              "/bin/bash"         3 minutes ago       Created                                         container-1

现在我们有一个停止的容器,您可以使用 码头工人启动命令

[email protected]:~$ docker start container-2
container-2
[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
13dc0f4226dc        ubuntu              "bash"              2 minutes ago       Up 2 seconds                            container-2

但是使用 docker create 命令创建的 container-1 会发生什么? 您可以使用 docker start 命令启动此容器,然后使用 码头工人执行 用它运行一些特定的东西。

我希望这篇文章能让你更好地了解 docker run、docker start 和 docker create 命令。 我会建议学习容器生命周期以进一步理解这个主题。

如果您有任何问题或建议,请随时在下面发表评论。