在实践中开始容器我做:
docker run a8asd8f9asdf0
如果是这样的话,怎么办:
docker start
做什么?
手册上写着
启动一个或多个停止的容器
run
start
docker run医生中提到:
docker run
docker run命令首先在指定的映像上创建一个可写容器层,然后使用指定的命令开始它。 也就是说,docker 运行相当于API /containers/create,然后是/containers/(id)/start。
docker run命令首先在指定的映像上创建一个可写容器层,然后使用指定的命令开始它。
也就是说,docker 运行相当于API /containers/create,然后是/containers/(id)/start。
/containers/create
/containers/(id)/start
举例说明:
假设您的计算机中有一个游戏(iso)映像。
当你run(挂载你的映像作为一个虚拟驱动器)时,一个虚拟驱动器被创建,虚拟驱动器中的所有游戏内容和游戏安装文件被自动启动。运行你的docker镜像-创建一个容器,然后启动它。
但是当你stop(类似于docker stop)它,虚拟驱动器仍然存在,但停止所有进程。[因为容器一直存在直到它被删除]
stop
当你执行start(类似于docker start)时,游戏文件从虚拟驱动器开始执行。[启动现有容器]
在本例中,游戏映像是Docker映像,虚拟驱动器是容器。
这是一个非常重要的问题,答案很简单,但却是基本的:
docker run IMAGE_ID
docker run CONTAINER_ID
docker stop CONTAINER_ID
docker start CONTAINER_ID
daniele3004的答案已经很好了。
只是一个又快又脏公式,适用于像我这样经常混淆run和start的人:
__abc0 = __abc1 + __abc2
run命令从映像创建一个容器,然后在这个容器上启动根进程。使用run --rm标志运行它将为你省去事后删除无用的死容器的麻烦,并允许你完全忽略docker start和docker remove的存在。
run --rm
docker remove
run命令做了一些不同的事情:
docker run --name dname image_name bash -c "whoami"
docker ps
bash -c "whoami"
docker run --name dname image_name
如何删除容器一旦它被自动停止?< / em >给run命令添加一个--rm标志:
--rm
docker run --rm --name dname image_name bash -c "whoami"
如何在一个容器中执行多个命令?< / em >通过防止根进程死亡。这可以通过在开始时运行一些带--detached标志的无用命令来实现,然后使用"execute"来运行实际的命令:
--detached
docker run --rm -d --name dname image_name tail -f /dev/null docker exec dname bash -c "whoami" docker exec dname bash -c "echo 'Nnice'"
要停止我们在前一代码段中使用无尽命令tail -f /dev/null启动的滞留容器。
tail -f /dev/null
更明智的做法是将该命令命名为“new”;而不是"run"
Run创建一个现有(或可下载)映像的容器实例并启动它。