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