【问题标题】:Issue with Docker container not running after been deploy部署后 Docker 容器未运行的问题
【发布时间】:2020-04-11 11:14:09
【问题描述】:

以下步骤一一执行,没有一个提供错误输出,但即使容器在执行后没有运行:

1.容器创建没有错误

~$ sudo docker container run -d -p 81:22 --name test3 ubuntu
866a390866d1aed2d4e550ba6ec6bed1742093c179612758aa291cdc17e01dcb

2。未从正在运行的容器中列出

~$ sudo docker container ls

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES
fe68bc38a7f9        nginx               "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   test2

3.未从所有容器中列出

~$ sudo docker container ls -a

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                      PORTS                NAMES
866a390866d1        ubuntu              "/bin/bash"              27 seconds ago       Exited (0) 25 seconds ago                        test3

4.以正输出强制启动容器

~$ sudo docker start 866

866

5.列出容器后仍未显示为正在运行

~$ sudo docker container ls

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
fe68bc38a7f9        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 2 minutes        0.0.0.0:80->80/tcp   test2

任何有关此问题的帮助都会受到社区欢迎!


有关主机操作系统和 Docker 版本的更多详细信息

主机操作系统

Linux master 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

~$ sudo 码头工人信息

[sudo] password for master:
Containers: 3
 Running: 1
 Paused: 0
 Stopped: 2
Images: 5
Server Version: 18.06.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.4.0-142-generic
Operating System: Ubuntu 16.04.6 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.748GiB
Name: master
ID: ZRU3:Y5V2:Q2GK:AYC4:N3BX:6ADV:6BUU:47PJ:DXFC:L2MY:UVQP:TEKP
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

警告:不支持交换限制

【问题讨论】:

    标签: linux docker ubuntu containers docker-run


    【解决方案1】:

    嗯,这不是错误。 ubuntu:latest 默认命令是 /bin/bash (source),因此当容器启动时,它会等待您的输入。但是,由于您在分离模式下运行它,它无法接收输入并自行关闭。

    从您的问题来看,您不清楚您希望这个容器做什么。但是你可以在交互模式下运行它:

    sudo docker container run -ti -p 81:22 --name test3 ubuntu
    

    【讨论】:

    • Vitally,相信你的话,我将解释这个 Linux 容器的要求: 1. 构建一个需要 Linux 服务器容器的项目。 2. Linux 容器将与数据库和其他服务器交互,因此它需要 24/7 全天候运行,执行其操作并通过交互式外壳/终端访问以配置所需的任何内容。 3. 问题?此命令将允许继续运行容器,或者一旦我 Exit -ti/interactive shell 将终止它?我希望这能阐明构建这个 Linux Container 的目的!
    • 3.是的,它会停止容器
    • 关于 1 和 2。所有 docker 社区都建议将容器视为单个进程。在您的情况下,您似乎需要处理多个容器。例如,对于 1,您需要一个包含所有构建依赖项的容器,该容器仅开始并完成构建过程,之后它必须以某种方式存储构建结果。在 2 的情况下,如果我们谈论的是处理 shell 输入,那么我最初展示它的方式似乎很适合您。您甚至可以在每个命令上引发容器,例如 sudo docker run ubuntu /bin/bash -c "your shell command"
    • 为你自己的责任做这件事:作为解决方法,让容器保持空闲,你可以这样做:docker run -d --name worker ubuntu tail -f /dev/null。这将设置容器处理无限循环。您仍然可以在此容器上执行命令甚至调用交互式 shell:docker exec -ti worker /bin/bash
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2021-12-01
    • 2021-07-14
    • 2018-08-13
    相关资源
    最近更新 更多