Docker容器无法在启动时启动
我正在运行一个启动脚本,在重新启动时调用一个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”不需要input密码。
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
每当我手动运行启动脚本,它完美的作品,使得它看起来像一个环境variables/path问题给我。 search周围发现有关不设置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
这个“解决scheme”最终是在启动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,你会发现调用开始使用–background选项来启动 – 停止守护进程,这意味着它仍然在做什么,当它返回。
为什么不使用&&?
我尝试使用&&
在启动docker守护进程之后对容器的起始位置进行排队,但是&&
只会在前者成功的情况下运行下一个命令(这并非总是如此)(例如,如果docker守护程序已经在运行) 。 [ ref ]
另一种解决scheme可能是使用–restart = always选项手动运行此容器:
docker run --restart=always -d 91b5261e2dc0
docker工程师将在docker start之后启动所有这样的容器,并且如果容器没有docker stop命令就停止。
您可以在运行容器之前等待docker套接字可用:
# 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