Ubuntu容器不断重启

Cyr*_*tra 2 ubuntu containers docker

我正在使用docker-compose添加新的ubuntu容器,但是该容器一直在重新启动,我不知道为什么...我可以检查的任何线索吗?

这是我的docker-compose服务:

  ubuntu:
    image: ubuntu
    container_name: ubuntu
    network_mode: host
    restart: unless-stopped
    volumes:
      - /mnt:/NAS:rw
    environment:
      - TZ="Asia/Shanghai"
Run Code Online (Sandbox Code Playgroud)

这是docker ps输出:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS                                            NAMES
6c084528838c        ubuntu              "/bin/bash"              6 minutes ago       Restarting (0) 18 seconds ago                                                    ubuntu
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu服务器17.04上使用Docker 17.09,并且使用以下别名运行容器:

alias dcrun='docker-compose -f /home/docker-compose.yml'

dcrun up -d ubuntu
Run Code Online (Sandbox Code Playgroud)

谢谢

viv*_*d4v 5

这是非常期望的,因为您尚未定义任何内容command:或未entrypoint:在docker compose中定义。

默认情况下,Ubuntu映像具有bash命令,因为CMD它实际上不是前台进程。参考-https: //github.com/dockerfile/ubuntu/blob/master/Dockerfile

如果您以互动模式(-i)运行它,则会bash自动进入-

$ docker run -it ubuntu 
root@8d6ac0591d88:/# 
Run Code Online (Sandbox Code Playgroud)

因此,一旦bash命令退出,容器也会消失,但由于您的restart: unless-stopped策略,Docker守护程序会继续尝试重新启动它。

如果您希望容器通过compose启动并运行,请尝试如下定义前台进程-

  ubuntu:
    image: ubuntu
    container_name: ubuntu
    network_mode: host
    restart: unless-stopped
    volumes:
      - /mnt:/NAS:rw
    environment:
      - TZ="Asia/Shanghai"
    command: "tail -f /dev/null"
Run Code Online (Sandbox Code Playgroud)

您的容器现在不会重新启动-

$ docker ps
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                      PORTS                     NAMES
cee860adf641        ubuntu                             "tail -f /dev/null"      5 seconds ago       Up 3 seconds                                          ubuntu
Run Code Online (Sandbox Code Playgroud)

  • 这就是我一直在寻找的!:) 谢谢。我使用了文件末尾带有“CMD [“tail”,“-f”,“/dev/null”]”的 Dockerfile 来保持容器运行。 (2认同)