用Docker启动一个容器,不用指定命令

我对LXC很熟悉,想试试Docker。 我面临的问题是,我找不到一个方法来告诉docker在后台启动一个容器,而不执行命令。 例如,用LXC我会做:

lxc create -t ubuntu -n my_container

lxc-start -n my_container -d

在这一点上,我将有一个运行的容器,我可以使用任何虚拟机(ssh到它,安装的东西…)似乎docker防止这种用法。 我错过了什么吗?

使用docker,从CLI,你不能创build一个容器,而不需要运行一个命令。 如果你想使用REST Api,你可以不用'start'就可以调用'create'端点。

但是,对我来说这不会有什么好处。

在大多数情况下,你可能只是想用bash docker run -t -i ubuntu bash运行一个容器,然后在那里做东西。 一旦你做了你所需要的一切,你可以简单地提交并从这个angular度运行。

但通常情况下,最好一步一步来保持清晰的历史。 看看Docker构build器:)

当我需要检查一个Docker容器,我已经创build了Dockerfile中运行正常CMD时遇到的问题,我注释掉了这个命令,并用“sleep”命令replace为启动时暂停容器,这样我就可以login它并检查安装。

在Dockerfile中

 CMD ["sleep","3600"] 

login正在运行的Docker实例

 docker exec -i -t <Container ID> bash 

您可以构build一个包含运行命令和其他configuration的Docker镜像,例如docker run <image>将启动容器。 最简单的方法是使用Docker Builder的 CMD 。 您将需要最新版本的Docker(> 0.4.6?)。

在使用Docker Builder之外,请检查docker commitdocker run的标志(其中的命令参数是可选的)。

当我正在玩这个游戏的时候,在这里添加更多的想法。

假设我想使用3个docker容器:

 blong@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-CTRL-q保持所有的运行

 root@2ce602710fb9:/# blong@mycomputer:~/$ blong@mycomputer:~/$ 

也可以看看:

  • 正确的方式从容器中分离而不停止
  • 当Docker容器用于定期任务时,保持正确的方式
  • Docker容器会在“docker run -d”后自动停止