【问题标题】:Docker containers exit after start command启动命令后 Docker 容器退出
【发布时间】:2020-01-23 07:58:53
【问题描述】:

我正在尝试创建一个 docker 容器,该容器使用厨师食谱从 docker hub 添加 python 图像。 chef-client 运行后,我可以看到容器,但即使发出启动命令,它也没有启动。

这是我提取 python 图像的食谱,

docker_service 'default' do
  action [:create, :start]
end

docker_image 'python' do
  tag 'latest'
  action :pull
end

docker_container 'testpy' do
  repo 'python'
  tag 'latest'
  action :run
end

下面是容器的问题,

root@ubuntunode2-vm:~# docker start 2e512235c0fe
2e512235c0fe

root@ubuntunode2-vm:~# docker exec -it 2e512235c0fe bash

来自守护程序的错误响应:容器 2e512235c0fe50b6314648b9d6eae6162790e0793008344d27288d95c69d4923 未运行

屏幕截图中突出显示的容器是通过厨师食谱创建的

【问题讨论】:

  • 您是在容器内还是在 vm 内运行 chef-client?
  • 在一个虚拟机中,“ubuntunode-vm”是我的虚拟机名称
  • 检查docker logs 2e512235c0fe的输出
  • @DusanGligoric 我试过了,但什么也没给出 root@ubuntunode2-vm:~# docker logs 2e512235c0fe root@ubuntunode2-vm:~#
  • 你能做docker ps -a并检查它在那个容器上运行的命令,应该是python3吗?退出状态也很好

标签: docker containers chef-infra


【解决方案1】:

Python 的交互式 shell 需要 tty 才能运行,将 tty: true 添加到 docker_container 块中,您应该可以开始了。

【讨论】:

    【解决方案2】:

    由于您的问题不包括完整的详细信息,因此答案将集中在您的食谱上。

    假设您使用的是 docker cookbook:

    1. 安装 docker 引擎。你可以使用docker_installtion 资源来做到这一点。我更喜欢 docker_installation_package 资源,以便使用 docker 的 linux 存储库包并固定包版本
    2. 安装 docker 引擎后,让我们确保 docker 引擎守护程序(服务)正在运行。为此,您可以使用(本机)service 资源。请注意,docker 食谱中有 docker_service 资源,但我更喜欢本机服务方法
    3. 使用docker_image资源拉取docker镜像
    4. 使用docker_container资源运行拉取的docker镜像

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 2021-07-26
      • 2017-04-30
      • 1970-01-01
      • 2018-05-12
      相关资源
      最近更新 更多