运行 在后台使用 docker 组合的 ubuntu 容器

Running a ubuntu container in background using docker compose

我可以使用以下 docker 命令 运行 一个 docker 容器:

docker run -it  ubuntu /bin/bash

现在我正在尝试使用 docker-compose:

version: "3"
services:
  ubuntu:
    container_name: ubuntu
    image: ubuntu
    restart: on-failure
    command: "/bin/bash"

现在当我这样做时:

 docker-compose up -d

可以看到 docker 容器立即启动和退出。

我试着查看日志:

docker logs b8 //b8 is container id

但是没有错误日志。

如何使用 docker 在后台保留 ubuntu 容器 运行ning。 (我在 windows 上使用 docker,linux 版本)

这很正常。

您正在使用 bash 作为命令启动一个 ubuntu 容器( 因此是根进程 )。事情是保持 bash 活动 你需要用终端连接它。这就是为什么当你想在容器中 get a bash 时,你在命令中使用 -ti :

docker container exec -ti [my_container_id] bash

因此,如果您想让 ubuntu 容器保持活动状态并且不想将其附加到终端,则必须使用一个可以根据需要保持活动状态的进程。
下面是一个以 sleep infinity 作为主要过程的示例

version: "3"
services:
  ubuntu:
    container_name: ubuntu
    image: ubuntu
    restart: on-failure
    command: ["sleep","infinity"]

在这个例子中,您的容器将无限期地保持 运行。