Docker Run,Start和Create 的区别
如果我们是Docker的新手并通过阅读各种教程来学习它,则可能会遇到诸如启动docker容器,运行docker容器或者创建docker容器之类的术语。
这些术语足以使Docker感到困惑,因为所有三个docker命令看起来都相似。
实际上,很难说出docker run和docker start之间的区别。
Docker运行,Docker启动和Docker创建之间的区别
这些命令的作用如下:
Docker create命令从docker镜像创建一个新的新容器。
但是,它不会立即运行。
Docker start命令将启动任何已停止的容器。
如果使用docker create命令创建容器,则可以使用此命令启动它。
Docker run命令是create和start的组合,因为它创建一个新容器并立即启动它。
实际上,如果docker run命令在系统上找不到所提到的镜像,它甚至可以从Docker Hub中提取镜像。
让我们看一下例子
如果要遵循示例,请确保已安装Docker。
假设我们是使用docker pull ubuntu命令从Docker Hub下载Ubuntu镜像的。
我们可以在系统上看到所有可用的docker镜像。
在此示例中,我只有ubuntu(为避免混淆):
Hyman@theitroad:~$docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 775349758637 5 weeks ago 64.2MB
现在,使用docker create命令创建一个名为container-1的新Docker容器:
Hyman@theitroad:~$docker create --name container-1 ubuntu 2d9a8c190e6c9b3cbbc032a87762bfbc92f1dc0dd30abbe9bdb3ed7e74a6480f
我们可以看到它已经创建了一个新容器。
如果我们尝试查看所有正在运行的容器,则不会看到容器1,因为尽管它已创建,但从未启动。
Hyman@theitroad:~$docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
如果我们检查所有容器,无论它们是否正在运行,我们都会看到container-1的状态为“已创建”:
Hyman@theitroad:~$docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2d9a8c190e6c ubuntu "/bin/bash" 18 seconds ago Created container-1
现在,我们使用docker run命令创建并运行一个名为container-2的容器:
Hyman@theitroad:~$docker run -it -d --name container-2 ubuntu bash 13dc0f4226dc8d9d86e41d927c5616654d8263da2cc8c667aaa5b4dbd7f7e9b3
我们可以看到container-2正在运行,因为其状态为Up:
Hyman@theitroad:~$docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 13dc0f4226dc ubuntu "bash" About a minute ago Up About a minute container-2
让我们停止这个正在运行的容器:
Hyman@theitroad:~$docker stop container-2 container-2 Hyman@theitroad:~$docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES Hyman@theitroad:~$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
现在我们有了一个停止的容器,我们可以使用docker start命令再次启动它:
Hyman@theitroad:~$docker start container-2 container-2 Hyman@theitroad:~$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 exec对其运行特定的操作。