
大家早安,我是 docker 的初學者,所以我不太了解,但我需要安裝它。我在 GoDaddy 有一個 VPS 託管,我安裝了 docker本指南當我嘗試啟動 docker 時,出現錯誤:
docker.service 的作業失敗,因為控制進程退出並出現錯誤代碼。有關詳細信息,請參閱“systemctl status docker.service”和“journalctl -xe”。
運行systemctl status docker.service
我得到以下結果:
[root@ip-107-180-94-5 ~]# systemctl status docker.service -l
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/docker.service.d
└─godaddy.conf
Active: failed (Result: start-limit) since Wed 2020-01-29 06:49:01 MST; 4min 1s ago
Docs: https://docs.docker.com
Process: 3708 ExecStartPost=/opt/godaddy/docker/configure-snat (code=exited, status=2)
Process: 3571 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=0/SUCCESS)
Main PID: 3571 (code=exited, status=0/SUCCESS)
Jan 29 06:48:59 ip-107-180-94-5.ip.secureserver.net systemd[1]: Failed to start Docker Application Container Engine.
Jan 29 06:48:59 ip-107-180-94-5.ip.secureserver.net systemd[1]: Unit docker.service entered failed state.
Jan 29 06:48:59 ip-107-180-94-5.ip.secureserver.net systemd[1]: docker.service failed.
Jan 29 06:49:01 ip-107-180-94-5.ip.secureserver.net systemd[1]: docker.service holdoff time over, scheduling restart.
Jan 29 06:49:01 ip-107-180-94-5.ip.secureserver.net systemd[1]: Stopped Docker Application Container Engine.
Jan 29 06:49:01 ip-107-180-94-5.ip.secureserver.net systemd[1]: start request repeated too quickly for docker.service
Jan 29 06:49:01 ip-107-180-94-5.ip.secureserver.net systemd[1]: Failed to start Docker Application Container Engine.
Jan 29 06:49:01 ip-107-180-94-5.ip.secureserver.net systemd[1]: Unit docker.service entered failed state.
Jan 29 06:49:01 ip-107-180-94-5.ip.secureserver.net systemd[1]: docker.service failed.
運行journalctl -xe
我得到以下結果:
[root@ip-107-180-94-5 ~]# journalctl -xe-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit user-0.slice has finished starting up.--
-- The start-up result is done.Jan 29 07:10:01 ip-107-180-94-5.ip.secureserver.net systemd[1]: Started Session 11104 of user root.-- Subject: Unit session-11104.scope has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel--
-- Unit session-11104.scope has finished starting up.
--
-- The start-up result is done.Jan 29 07:10:01 ip-107-180-94-5.ip.secureserver.net systemd[1]: Started Session 11105 of user root.
-- Subject: Unit session-11105.scope has finished start-up
-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel---- Unit session-11105.scope has finished starting up.
--
-- The start-up result is done.
Jan 29 07:10:01 ip-107-180-94-5.ip.secureserver.net CROND[31560]: (root) CMD (/usr/local/cpanel/scripts/dcpumon-wr
Jan 29 07:10:01 ip-107-180-94-5.ip.secureserver.net CROND[31561]: (root) CMD (/usr/lib64/sa/sa1 1 1)
我關注了一些與我所做的工作有相同錯誤的人的帖子。我設法通過運行獲得另一個結果dockerd --debug
,它在以下行停止,我需要中止該命令:
INFO[2020-01-29T07:14:39.129935890-07:00] API listen on /var/run/docker.sock
之後,如果我運行systemctl start docker
它會卡住而不會返回,我需要再次中止該命令,然後我檢查狀態並systemctl status docker.service -l
產生以下結果:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/docker.service.d
└─godaddy.conf
Active: activating (start-post) since Wed 2020-01-29 07:17:17 MST; 1min 39s ago
Docs: https://docs.docker.com
Main PID: 32176 (dockerd); : 32313 (configure-snat)
Tasks: 15
Memory: 39.6M
CGroup: /system.slice/docker.service
├─32176 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
└─control
├─ 5261 sleep 0.1
└─32313 /bin/bash /opt/godaddy/docker/configure-snat
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: Cannot connect to the Docker daemon atunix:///var/run/docker.sock. Is the docker daemon running?
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: waiting for docker bridge...
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: Cannot connect to the Docker daemon atunix:///var/run/docker.sock. Is the docker daemon running?
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: waiting for docker bridge...
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: Cannot connect to the Docker daemon atunix:///var/run/docker.sock. Is the docker daemon running?
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: waiting for docker bridge...
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: Cannot connect to the Docker daemon atunix:///var/run/docker.sock. Is the docker daemon running?
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: waiting for docker bridge...
Jan 29 07:18:56 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: Cannot connect to the Docker daemon atunix:///var/run/docker.sock. Is the docker daemon running?
Jan 29 07:18:57 ip-107-180-94-5.ip.secureserver.net configure-snat[32313]: waiting for docker bridge...
按照其他提示,我運行了dockerd
命令並產生了結果:
WARN[2020-01-29T07:20:27.025438855-07:00] The "graph" config file option is deprecated. Please use "data-root" instead.
INFO[2020-01-29T07:20:27.025693705-07:00] Starting up
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid
所以我刪除了.pid文件,結果更改為:
WARN[2020-01-29T07:22:44.060324431-07:00] The "graph" config file option is deprecated. Please use "data-root" instead.
INFO[2020-01-29T07:22:44.061145504-07:00] Starting up
INFO[2020-01-29T07:22:44.064401028-07:00] parsed scheme: "unix" module=grpc
INFO[2020-01-29T07:22:44.064684277-07:00] scheme "unix" not registered, fallback to default scheme module=grpc
INFO[2020-01-29T07:22:44.064771804-07:00] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0 <nil>}] <nil>} module=grpc
INFO[2020-01-29T07:22:44.064814177-07:00] ClientConn switching balancer to "pick_first" module=grpc
INFO[2020-01-29T07:22:44.070245283-07:00] parsed scheme: "unix" module=grpc
INFO[2020-01-29T07:22:44.070333997-07:00] scheme "unix" not registered, fallback to default scheme module=grpc
INFO[2020-01-29T07:22:44.070364847-07:00] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0 <nil>}] <nil>} module=grpc
INFO[2020-01-29T07:22:44.070390331-07:00] ClientConn switching balancer to "pick_first" module=grpc
WARN[2020-01-29T07:22:44.071893568-07:00] [graphdriver] WARNING: the overlay storage-driver is deprecated, and will be removed in a future release
failed to start daemon: error while opening volume store metadata database: timeout
之後我無法繼續任何其他事情,我已經重新安裝了 docker 大約 2 次,但仍然沒有任何結果。誰能幫我?我使用的是 CentOS 7 發行版。
答案1
我有類似的錯誤。問題出在/etc/systemd/system/docker.service.d/godaddy.conf
,有位於指令執行腳本來設定網路和 iptables: ExecStartPost=/opt/godaddy/docker/configure-snat
。
在該腳本文件中,在我的情況下,這兩行確實失敗了:
...
iptables -t nat -D POSTROUTING -s ${DOCKER_NETWORK} ! -o docker0 -j SNAT --to ${PUBLIC_IP}
iptables -t nat -I POSTROUTING -s ${DOCKER_NETWORK} ! -o docker0 -j SNAT --to ${PUBLIC_IP}
問題在於變數${PUBLIC_IP}
由於某種原因為空並且生成的腳本已結束,--too
這是錯誤的,因為--too
需要參數。所以這會產生一個錯誤,導致我的 docker 無法啟動。
所以問題不在於docker本身。在我評論這一行之後:#ExecStartPost=/opt/godaddy/docker/configure-snat
in /etc/systemd/system/docker.service.d/godaddy.conf
.問題解決了。就我而言,Docker 啟動時沒有任何問題。
答案2
從 /var/lib/docker 中刪除檔案。然後重新啟動docker服務。