使用Docker启动容器而不指定命令

rmo*_*njo 15 lxc docker

我熟悉LXC,想试试docker.我面临的问题是我无法找到一种方法来告诉docker在后台启动容器而不执行命令.例如,使用LXC我会这样做:

lxc create -t ubuntu -n my_container

lxc-start -n my_container -d

在这一点上,我将有一个可以用作任何VM的运行容器(ssh到它,在其中安装东西......)似乎docker阻止了这种用法.我错过了什么吗?

Gam*_*tes 22

当我需要检查我创建的Docker容器在Dockerfile中运行正常CMD时遇到问题时,我注释掉该命令并用"sleep"命令替换它只是在容器启动时暂停容器所以我可以登录它并检查安装.

在Dockerfile中

CMD ["sleep","3600"]
Run Code Online (Sandbox Code Playgroud)

登录正在运行的Docker实例

docker exec -i -t <Container ID> bash
Run Code Online (Sandbox Code Playgroud)

  • 不得不这样做感觉很愚蠢,但确实很不错。除非它在一小时后毫不客气地将你踢出去!我现在使用“无限睡眠”。 (3认同)
  • 我是 Docker 新手,但我不确定我是否理解这样做的好处。无论 Dockerfile 中的 CMD 是什么,您都可以使用“docker container run -it &lt;image&gt; /bin/bash”从该映像创建一个交互式容器。那么为什么需要 sleep 命令呢? (2认同)

cre*_*ack 11

使用docker,如果没有在其上运行命令,则无法创建容器.如果要使用REST Api,可以在不使用"start"的情况下调用"create"端点.

但是,我认为这对你没有任何好处.

在大多数情况下,你可能只想运行一个带bash的容器docker run -t -i ubuntu bash并在那里做东西.一旦你完成了所需的一切,你就可以简单地提交并运行.

但通常情况下,最好一次做一步以保持清晰的历史.看看Docker构建器:)