Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在分离模式下启动Docker容器?_Docker - Fatal编程技术网

有没有办法在分离模式下启动Docker容器?

有没有办法在分离模式下启动Docker容器?,docker,Docker,我是一名Docker新手,因此我对以下概念和术语的使用可能存在缺陷 我想我理解创建容器(通过docker-create)和启动这样创建的容器(通过docker-start)的概念。我也不太清楚,但还是有点明白,docker run用于同时创建和运行容器。如果我错了,请纠正我 除非我遗漏了什么,否则如果我想启动一个容器以便将其分离,我唯一的选择就是docker run-d 我不明白的是:假设我已经创建了我的容器,它停止了,现在我想启动它。我该怎么做?或者这是一种错误的思考方式 我尝试使用下面的命令

我是一名Docker新手,因此我对以下概念和术语的使用可能存在缺陷

我想我理解创建容器(通过
docker-create
)和启动这样创建的容器(通过
docker-start
)的概念。我也不太清楚,但还是有点明白,
docker run
用于同时创建和运行容器。如果我错了,请纠正我

除非我遗漏了什么,否则如果我想启动一个容器以便将其分离,我唯一的选择就是
docker run-d

我不明白的是:假设我已经创建了我的容器,它停止了,现在我想启动它。我该怎么做?或者这是一种错误的思考方式

我尝试使用下面的命令运行容器两次,结果遇到了这种概念上的误解(我确信这就是原因):
docker-d--name=fred my/image

我第二次得到:

docker:来自守护进程的错误响应:冲突。容器[…]已在使用名称“/image”

精细;我现在明白了,这试图创建两个同名的容器,这显然是不可能的。但这让我想到了一个概念性的问题:如果我有一个容器,比如说,停止了,我如何才能在分离模式下启动它

我告诉过你我是新手。谢谢您提供的任何信息。

以下是它的工作原理

运行docker容器
busybox
,在分离模式下运行一个极小的linux映像
,容器名称为
testso

bash $ docker run -itd --name testso busybox
b60d0847bb81065d5f5d4b3a3acff3102d03e7a8a084c0770da4487427787479
您可以看到容器正在运行

bash $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b60d0847bb81        busybox             "sh"                7 seconds ago       Up 2 seconds                            testso
现在停止上面的容器
testso
,并检查没有容器正在运行

bash $ docker stop testso
testso
bash $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
现在,通过启动先前停止的容器
testso
来解决您的问题,并查看容器在后台运行

bash $ docker start testso
testso
bash $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b60d0847bb81        busybox             "sh"                46 seconds ago      Up 2 seconds                            testso
因此,当容器首先使用
-d
选项
docker run
时,容器只需使用
docker start container-id
即可,该选项将自动在分离模式下运行

希望这是有帮助的

更新: 关于第二次跑步,正如你正确指出的,有两种选择:

  • 您不必使用命令
    docker run--name=mycontainer image
    来运行它,只需启动您刚刚尝试的现有容器,上面的答案会有所帮助
  • 清除现有容器并重新运行docker run--name=mycontainer image
    要擦除现有容器,请使用命令-
    docker rm-f mycontainer

  • 除非在启动容器时特别附加(-a或-i选项),否则根据定义,您是分离的

    创建容器只是构建文件系统层。启动它将运行
    ENTRYPOINT
    (或CMD)进程。正如您所猜测的,Run既可以创建,也可以启动。因此,您不能“附加”到已创建的容器。。。没有可附加到的进程

    在这里,我创建了一个容器(同样,这所做的只是创建文件系统层):

    看到了吗

    sysadmin@vmr-132-9 ~]$ docker ps -a
    CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                     PORTS               NAMES
    9d5bf75a8077        centos:latest            "/bin/sh -c 'while tr"   15 seconds ago      Created                                        test
    
    它什么也没做。现在在不附加的情况下启动它,不会向终端标准输出任何内容,因为我没有附加。但是,STDOUT将进入日志驱动程序(json文件)


    詹姆斯,现在你的答案。您可以在回答问题时获得帮助链接,然后开始使用“前进”。)谢谢Rao,我查看了帮助并尝试使用backticks。我也尝试过
    ,但没有提交,因为它在“预览”中看起来不正确。只是为了让我开始。。。“你对我的街区用了什么划分?”詹姆斯莫尔,谢谢你的回答。这很有帮助。关于格式,请在空行后开始新行,并在其前面加上四个空格。急板地;实例块monospace.Laird,你能检查一下上面的答案是否有助于更好地理解吗?它解决了你的问题吗?
    sysadmin@vmr-132-9 ~]$ docker ps -a
    CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                     PORTS               NAMES
    9d5bf75a8077        centos:latest            "/bin/sh -c 'while tr"   15 seconds ago      Created                                        test
    
    [sysadmin@vmr-132-9 ~]$ docker start test test
    [sysadmin@vmr-132-9 ~]$ docker logs test
    hello world
    hello world
    hello world
    hello world