Docker start命令 | docker启动容器命令 27

作者 : 慕源网 本文共3002个字,预计阅读时间需要8分钟 发布时间: 2021-12-15 共461人阅读

Docker start命令介绍

docker start’ 是一个 Docker 命令,用于启动一个或多个停止的容器。我们也可以使用这个容器来启动我们使用 ‘docker create’ 命令创建的容器或处于 ‘created’ 状态的容器,因为 ‘docker create’ 命令会创建容器但它不会自动启动。例如,如果我们创建了一个 nginx 容器并对外暴露了 80 端口,但该容器将在使用“docker start”命令启动之前一直提供服务。这个命令还有一些标志来获取交互式控制台、从检查点恢复、附加 STDOUT/STDERR 等。

Docker start命令 | docker启动容器命令 27

语法:

docker start [OPTIONS] CONTAINER [CONTAINER...]

选项: 

attach, -a:用于附加STDOUT/STDERR和转发信号。

checkpoint:用于从特定检查点恢复容器(实验性)。

checkpoint-dir:我们可以使用此选项使用自定义检查点存储目录。

detach-keys:覆盖分离容器的键序列。

interactive,-i:用于附加容器的标准输入。

help:用于获取此命令的帮助,如下所示:

docker start --help

Docker start命令 | docker启动容器命令 27

docker启动容器命令解释

‘docker start’ 的工作方式与 Docker 中其他命令的工作方式相同。当我们从 CLI 运行此命令并将容器名称作为参数传递时,Docker CLI 会调用 Docker 守护进程的 API,如果容器处于停止状态或创建状态,守护进程将启动该容器。如果在运行或创建该容器时未配置它,我们不能在启动容器时公开端口、为其命名、附加卷等。这个命令只是简单地启动容器,但是,我们可以使用一些标志来控制一些事情,比如一旦容器启动就连接到容器,附加 STDOUT/STDERR 等。

例子

让我们通过几个例子来更多地了解这个命令。

示例 #1:启动一个或多个停止的容器

第 1 步:让我们使用以下命令创建一个 nginx 容器并使用 curl 访问默认页面:

命令:

docker run -d -p 80:80 --name my-nginx nginx:alpine

curl http://localhost:80

Docker start命令 | docker启动容器命令 27

第 2 步:现在,使用“docker stop”命令停止容器并尝试访问本地主机:

命令:

docker container stop my-nginx

curl  http://localhost:80

第 3 步:让我们再次启动容器,但这次使用 ‘docker start’ 命令,因为我们只想启动已停止的容器,不想创建新容器。

命令:

docker start my-nginx

Docker start命令 | docker启动容器命令 27

在上面的例子中,我们可以看到启动容器后默认页面又可以访问了。

第 4 步:假设我们有多个处于退出状态的容器,我们希望使用单个命令启动。我们可以这样做,如下所示:

命令:

docker start <container_name1> <container_name2> <container_name3>

或者

docker start $(docker ps -q -f “status=exited”)

Docker start命令 | docker启动容器命令 27

在上面的快照中,我们可以看到我们有 3 个停止的容器,并且所有停止的容器都已成功启动。

注意:快照中显示的命令仅在容器状态为“exited”时有效,如果容器处于不同状态或更改命令中的状态,我们必须使用上面提到的第一个命令。

示例#2:创建一个容器,然后启动它

第 1 步:让我们使用以下命令创建一个容器:

命令:

docker create -p 80:80 –name my-nginx2 nginx:alpine
docker ps -f ‘status=created’

curl  http://locahost:80

第 2 步:现在,按如下方式启动容器并尝试再次访问它:

命令:

docker start my-nginx2
curl http://localhost:80

Docker start命令 | docker启动容器命令 27

示例 #3:在启动时附加 Container STDOUT/STDERR

第 1 步: 让我们创建一个“hello-world”容器,如下所示,并尝试在没有任何标志的情况下启动它:

命令:

docker create hello-world
docker start <container_ID or container_name>

第二步:我们可以看到启动容器后屏幕上没有输出。让我们创建另一个容器并使用“-a”或“–attach”标志启动它:

命令:

docker create hello-world
docker start -a <container_ID or container_name>

Docker start命令 | docker启动容器命令 27

在上面的快照中,我们可以看到,当我们使用 ‘-a’ 选项运行 ‘docker start’ 命令时,我们在 STDOUT 上得到了输出。如果容器在启动时抛出错误,我们也会收到错误消息。

示例 #4:使用检查点启动容器

步骤 1: 首先,我们需要安装 CRIU(用户空间中的检查点/恢复)以使用 Docker 检查点。我们可以使用以下命令简单地安装 CRIU:

命令:

sudo apt-get install criu

Docker start命令 | docker启动容器命令 27

Step 2: Docker checkpoint 仅在 Docker 的实验模式下工作,所以让我们通过如下所示编辑 daemon.json 文件来启用实验模式并重新启动 docker 服务:

命令:

sudo vi /etc/docker/daemon.json
sudo systemctl restart docker

Docker start命令 | docker启动容器命令 27

Docker start命令 | docker启动容器命令 27

第 3 步:让我们使用“ubuntu”Docker 镜像运行一个容器,使用以下命令:

命令:

docker run -d --name checkpoint-cont --security-opt seccomp:unconfined ubuntu  /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 5; done'

Docker start命令 | docker启动容器命令 27

在上面的示例中,我们创建了一个名为“checkpoint-cont”的容器,它每 5 秒开始打印从 0 开始的计数,我们可以在日志中看到它并且它正在增加。

第 4 步:让我们使用以下命令为此容器创建一个名为“checkpoint-01”的检查点:

命令:

docker logs checkpoint-cont
docker checkpoint create checkpoint-cont checkpoint-01

Docker start命令 | docker启动容器命令 27

在上面的快照中,我们可以看到容器在创建检查点之前已经打印到 10。

第 5 步:最后,使用带有“–checkpoint”选项的“docker start”命令启动容器,如下所示:

命令:

docker start --checkpoint checkpoint-01 checkpoint-cont

Docker start命令 | docker启动容器命令 27

在上面的快照中,我们可以看到计数已经在创建检查点之前离开的地方开始了。

注意:容器在创建检查点后停止。

优势

  1. 我们可以使用 Docker Start 轻松启动已停止或创建的容器。
  2. 我们还可以使用“docker create checkpoint”从我们之前创建的检查点启动任何容器。
  3. 我们还可以使用“-checkpoint-dir”来启动一个带有任何不同容器的检查点的新容器。

结论

该命令对于从检查点启动容器非常有用,但是,检查点功能仅在实验模式下可用,因此我们需要在使用此功能之前启用实验功能。

推荐文章

这是 Docker 入门指南。在这里,我们还讨论了介绍和 Start Command 在 Docker 中的工作原理以及不同的示例及其代码实现。

本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –

 

 


慕源网 » Docker start命令 | docker启动容器命令 27

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录