簡體   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