在docker中,create命令与run命令都可以创建一个新的容器,区别就是create命令创建一个新的容器但是不启动它,而run命令创建一个新的容器会运行一个命令。
本教程操作环境:linux7.3系统、docker-1.13.1版、Dell G3电脑
docker中create与run的区别是什么
以下是这些命令的用途:
-
docker create命令从 Docker 映像创建一个全新的容器。但是,它不会立即运行它。
-
docker start命令将启动任何已停止的容器。如果使用 docker create命令创建容器,则可以使用此命令启动它。
-
docker run 命令是创建和启动的组合,因为它创建了一个新容器并立即启动它。实际上,如果docker run命令在您的系统上找不到上述映像,它甚至可以从 Docker Hub 中提取映像。
让我们用例子来看看它,这样你就能更清楚地知道事情。
让我们通过示例来查看它
如果要遵循示例,请确保已安装 Docker。
假设您使用 docker pull ubuntu 命令从 Docker Hub 下载 Ubuntu 映像。
您可以查看系统上所有可用的 Docker 映像。在这个例子中,我只有ubuntu(为了避免混淆):
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 775349758637 5 weeks ago 64.2MB
现在,使用 docker create 命令创建一个名为 container-1 的新docker容器:
# docker create --name container-1 ubuntu 6a81a998658e9e0d3b612ee65b07d76a45d79812d860baf3f1cbc60fe997ebec
可以看到它已创建一个新容器。如果尝试查看所有正在运行的容器,则不会看到 container-1,因为尽管它已创建,但从未启动过。
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
如果检查所有容器,无论它们是否正在运行,都会看到 container-1 具有”已创建”状态:
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6a81a998658e ubuntu "/bin/bash" 18 seconds ago Created container-1
现在,让我们使用docker run 命令来创建并运行一个名为 container-2 的容器:
# docker run -it -d --name container-2 ubuntu bash 6391c1a0cac6c9f5fc6f5cfb05d75a22c208e63223c3b231035a40a4b134c521
您可以看到容器-2 正在运行,因为它的状态为”已启动”:
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6391c1a0cac6 ubuntu "bash" About a minute ago Up About a minute container-2
让我们停止这个正在运行的容器:
# docker stop container-2 container-2 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6391c1a0cac6 ubuntu "bash" 2 minutes ago Exited (0) 28 seconds ago container-2 6a81a998658e ubuntu "/bin/bash" 3 minutes ago Created container-1
现在我们有一个停止的容器,您可以使用docker start 命令再次启动它:
# docker start container-2 container-2 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6391c1a0cac6 ubuntu "bash" 2 minutes ago Up 2 seconds container-2
但是,使用 docker create 命令创建的 container-1 会发生什么情况呢?您可以使用 docker start 命令启动此容器,然后使用docker exec运行特定的东西。
推荐学习:《docker视频教程》