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

时间:2016-11-30 10:07:27

标签: docker chef boot2docker chef-recipe

执行以下命令时,我正在观察以下错误。

  

cmd used-docker exec -it f88566c370dd /bin/bash   观察到错误 - Error response from daemon: Container f88566c370dd is not running

我正在尝试从VM执行Chef配方来提取图像并运行三个CentOS容器。

厨师食谱

#
# Cookbook Name:: chef-docker
# Recipe:: default    #
# Copyright 2016, SONATA_SOFTWARE    #
# All rights reserved - Do Not Redistribute
#
docker_service 'default' do
  action [:create, :start]
end

# Pull latest image
docker_image 'centos' do
  tag 'latest'
  action :pull
end

# Run container
docker_container 'first' do
  repo 'centos'
  command 'ls -la /'
  end

  docker_container 'second' do
  repo 'centos'
  command 'ls -la /'
  end

  docker_container 'third' do
  repo 'centos'
  command 'ls -la /'
  end

VM中用于执行主厨配方的命令

chef-client -r recipe[chef-docker::Default]

预期结果:在容器中安装Java,Python或Jenkins和Tomcat等工具。

[root@sonatadocker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED                                                 VIRTUAL SIZE
centos              latest              97cad5e16cb6        3 weeks ago                                             196.5 MB

[root@sonatadocker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
f88566c370dd        centos:latest       "ls -la /"          18 hours ago        Exited (0) 17 hours ago                       third
fdc12e9f65a9        centos:latest       "ls -la /"          18 hours ago        Exited (0) 17 hours ago                       second
604f0eba7010        centos:latest       "ls -la /"          18 hours ago        Exited (0) 17 hours ago                       first

3 个答案:

答案 0 :(得分:3)

为了保持容器的正常运行,Docker需要一个命令来继续在前台运行。

在您的情况下,命令 " ls -la /" 列出目录内容并退出,这将导致退出容器。尝试使用继续在前台运行的命令启动容器。

答案 1 :(得分:1)

您的容器只运行一个命令,然后退出。

docker_container 'first' do
  repo 'centos'
  command 'ls -la /'
  end

将此视为产生子shell,执行ls -al /,然后退出。

让他们保持正常运行的黑客将命令更改为:

ls -la /; sleep 10m

要验证容器是否已运行该命令,您可以使用以下命令检查容器的日志:

docker logs third

答案 2 :(得分:0)

通过将命令更改为“/ bin / bash”,我可以看到处于up状态的容器。

docker_service 'default' do
  action [:create, :start]
end
# Pull latest image
docker_image 'centos' do
  tag 'latest'
  action :pull
end
# Run container
docker_container 'first' do
  repo 'centos'
  command '/bin/bash'
  tty true
  action :run
  end
  docker_container 'second' do
  repo 'centos'
  command '/bin/bash'
  tty true
  action :run
  end