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

Error response from daemon: Container f88566c370dd is not running

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

cmd used- docker exec -it f88566c370dd /bin/bash error observed- 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

你的容器运行只有一个命令然后退出。

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

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

保持它们正常运行的技巧,运行ning 将命令更改为:

ls -la /; sleep 10m

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

docker logs third

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

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

为了让容器保持运行,Docker 需要一个命令将 运行ning 保持在前台。

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