繁体   English   中英

Docker容器无法在启动时启动

[英]Docker Container Failing To Start On Boot

我正在运行一个带有启动脚本的EC2实例,该脚本在重启时调用。 此启动脚本在启动容器之前检查docker守护程序是否正在运行,但失败并显示错误: Post http:///var/run/docker.sock/v1.13/containers/create: dial unix /var/run/docker.sock: no such file or directory

启动脚本

# Make sure the docker daemon has started
sudo /usr/sbin/service docker start

# start the container
sudo /usr/bin/docker run -d 91b5261e2dc0

请注意,他在ec2实例上,其中“sudo”不需要输入密码。

Crontab条目:

@reboot /bin/bash /home/ubuntu/start-container.sh 2> /home/ubuntu/cron_errors.log

错误:

start: Job is already running: docker
2014/08/01 09:45:48 Post http:///var/run/docker.sock/v1.13/containers/create: dial unix /var/run/docker.sock: no such file or directory

每当我手动运行启动脚本时,它都能完美地工作,这使得它看起来像环境变量/ PATH问题。 谷歌搜索发现有关未设置DOCKER_HOST的信息,但即使DOCKER_HOST仍未设置,启动脚本也能正常工作。

我需要更改或定义什么以确保容器在启动时正确启动?

版本信息

操作系统:Ubuntu 14.04硬件虚拟化。

Docker版本:

Client version: 1.1.2
Client API version: 1.13
Go version (client): go1.2.1
Git commit (client): d84a070
Server version: 1.1.2
Server API version: 1.13
Go version (server): go1.2.1
Git commit (server): d84a070

uname -a输出

Linux ip-10-76-167-92 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

“解决方案”最终是在调用启动docker守护程序后进入睡眠状态或等待状态。 例如

# Make sure the docker daemon has started
sudo /usr/sbin/service docker start

# Wait for the docker daemon to finish starting
sleep 10

# start the container
sudo /usr/bin/docker run -d 91b5261e2dc0

这似乎是因为Chris McKinnel说:

...如果您查看/etc/init.d/docker,您会看到调用start使用--background选项来启动 - 停止 - 守护进程,这意味着它在返回时仍在执行操作。

为什么不使用&&?

在调用启动docker守护程序之后,我尝试使用&&对容器的启动进行排队,但是&&只会在前者成功的情况下运行下一个命令,但并非总是如此(例如,如果docker守护程序已在运行) 。 [ 参考 ]

另一种解决方案可能是使用--restart = always选项手动运行此容器:

docker run --restart=always -d 91b5261e2dc0    

docker将在docker启动后运行启动所有此类容器,如果容器将在没有docker stop命令的情况下停止。

在运行容器之前,您可以等待docker socket变为可用:

# Start the docker daemon
sudo /usr/sbin/service docker start

# Wait for docker socket to become available
while [ ! -e /var/run/docker.sock ]; do sleep 1; done

# start the container
sudo /usr/bin/docker run -d 91b5261e2dc0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM