我有一个从 ubuntu 基础映像构建的 docker 映像,安装了一些软件。
我有一个启动脚本,如下
#!/bin/bash
/usr/local/sbin/process1 -d
/usr/local/sbin/process2 -d
/bin/bash
现在我使用 docker-py python 库从一个 python 文件启动多个这些容器。
c = docker.Client(base_url='unix://var/run/docker.sock',
version='1.12',
timeout=10)
container = c.create_container("p12", command="/startup.sh", hostname=None, user=None,
detach=False, stdin_open=False, tty=False, mem_limit=0,
ports=None, environment=None, dns=None, volumes=None,
volumes_from=None, network_disabled=False, name=None,
entrypoint=None, cpu_shares=None, working_dir=None,
memswap_limit=0)
c.start(container, binds=None, port_bindings=None, lxc_conf=None,
publish_all_ports=False, links=None, privileged=False,
dns=None, dns_search=None, volumes_from=None, network_mode=None,
restart_policy=None, cap_add=None, cap_drop=None)
这很好用,当我在 Ubuntu 桌面、Ubuntu 14.04.1 LTS 和 1.10 的 docker-py 版本上测试它时,我可以启动多个(比如 3 个)。它将启动码头工人,我可以稍后进行码头附加并在终端上工作。
现在我将我的测试环境转移到了一个带有 Ubuntu 14.04.1 LTS 和 docker-py 版本 1.12 的 Ubuntu Server 版本。
我看到的问题是,当我使用相同的脚本并尝试启动 3 个 docker 时,在将 process1 和 process 2 作为后台进程启动后,所有 docker 都会退出。似乎 /bin/bash 根本没有执行。
如果我执行与“docker run -t -i p14 /startup.sh -->”相同的 docker 映像,那么一切都会再次正常。docker 已正确启动,我可以访问终端。
唯一的问题是当我执行这个 python 库时。
任何人有任何类似的问题...有关如何调试此问题的任何想法...或任何修复指针?
谢谢,基兰