启动 – Docker容器无法在启动时启动

我正在运行一个带有启动脚本的EC2实例,该脚本在重启时调用.此启动脚本在启动容器之前检查docker守护程序是否正在运行,但是失败并显示错误:
发表http:///var/run/docker.sock/v1.13/containers/create:拨打unix /var/run/docker.sock:没有这样的文件或目录

启动脚本

# 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说:

…if you take a look inside /etc/init.d/docker, you’ll see that
calling start uses the –background option to start-stop-daemon which
means it’s still doing stuff when it returns.

为什么不使用&& ?

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

转载注明原文:启动 – Docker容器无法在启动时启动 - 代码日志