我熟悉LXC并想尝试使用docker。我的问题是,我找不到一种方法只告诉docker在后台启动容器,而不执行命令。例如,使用LXC,我会执行以下操作:
lxc create -t ubuntu -n my_container
lxc-start -n my_container -d
此时,我将拥有一个运行中的容器,可以像任何虚拟机一样使用它(ssh到它,安装东西...)。
看起来docker阻止了这种用法。我错过了什么吗?
当我需要检查一个由我创建的Docker容器时,如果该容器无法正常运行Dockerfile中的CMD命令,我会将该命令注释掉,并替换为"sleep"命令以便在容器启动时暂停它,以便我可以登录并检查安装过程。
Dockerfile中:
CMD ["sleep","3600"]
登录正在运行的 Docker 实例:
docker exec -i -t <Container ID> bash
docker run -t -i ubuntu bash
并在其中执行操作。一旦完成所有需要的操作,就可以简单地提交并从此刻开始运行。ps -ef
命令,只输出我的进程。你知道他们是如何做到的吗? - rmonjodocker run <image>
将启动容器。最简单的方法是使用Docker Builder中的CMD
。您需要一个较新的Docker版本(>0.4.6?)。docker commit
和docker run
的标志(其中命令参数是可选的)。
docker run -d b750fe79269d
报错 "未指定命令"。 - rmonjodocker run
的末尾添加您想在容器内运行的内容即可。例如 bash。 - Filippo Vitaleblong@mycomputer:~$ docker run --name ubuntuContainer1 -itd ubuntu
2ce602710fb9b84b6530e5a1072961627e91731aba8f8b019f346fc78df08d7c
blong@mycomputer:~$ docker run --name ubuntuContainer2 -itd ubuntu
e32b0eb72456fc23222f3915c91afc77e06a7e37a073b11f7088fabe8fa4bf20
blong@mycomputer:~$ docker run --name ubuntuContainer3 -itd ubuntu
40574f704dceb0378f48ebe01d014d598434093d649be13573911d9833d9825d
即使我没有明确要求运行/bin/bash,也要确保它们继续运行。
blong@mycomputer:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40574f704dce ubuntu "/bin/bash" 2 seconds ago Up 1 seconds ubuntuContainer3
e32b0eb72456 ubuntu "/bin/bash" 5 seconds ago Up 4 seconds ubuntuContainer2
2ce602710fb9 ubuntu "/bin/bash" 8 seconds ago Up 7 seconds ubuntuContainer1
我可以进入容器
blong@mycomputer:~$ docker attach ubuntuContainer1
root@2ce602710fb9:/#
我可以在容器中执行命令(例如安装软件包)
root@2ce602710fb9:/# apt-get update
# ... omitting output
root@2ce602710fb9:/# apt-get install nodejs
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libc-ares2 libv8-3.14.5
The following NEW packages will be installed:
libc-ares2 libv8-3.14.5 nodejs
0 upgraded, 3 newly installed, 0 to remove and 5 not upgraded.
Need to get 1912 kB of archives.
After this operation, 7538 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
# ... omitting output
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
root@2ce602710fb9:/# nodejs --version
v0.10.25
接着,我可以通过按下CTRL-p CTRL-q退出,同时保持一切正常运行。
root@2ce602710fb9:/# blong@mycomputer:~/$
blong@mycomputer:~/$
另请参阅:
sleep infinity
。 - Heath Rafterysleep
命令的容器,您可以使用此命令:https://hub.docker.com/r/refstudycentre/scratch-base - rudolfbykerdocker run -d theimage:v1
时,出现了这个错误docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "sleep": executable file not found in $PATH: unknown.
- Navdocker pull refstudycentre/scratch-base; docker run refstudycentre/scratch-base
- rudolfbyker