docker 起動時のエラーの解決策: 1. docker を開き、コンテンツ "OPTIONS="--selinux-enabled..."" を追加します; 2. iptables のフィルター テーブルをクリアします; 3. " を実行します。 docker -storage-setup」コマンドなど。
この記事の動作環境: CentOS 7.2 システム、Docker バージョン 18.04.0、Dell G3 コンピューター。
docker 起動時のエラーを解決するにはどうすればよいですか?
Docker 起動時のエラー レポートの概要
システムは CentOS 7.2
システム カーネルと Docker のバージョンは次のとおりです:
[root@docker ~]# uname -r 3.10.0-327.el7.x86_64 [root@docker ~]# [root@docker ~]# [root@docker ~]# [root@docker ~]# docker version Client: Version: 18.04.0-ce API version: 1.37 Go version: go1.9.4 Git commit: 3d479c0 Built: Tue Apr 10 18:21:36 2018 OS/Arch: linux/amd64 Experimental: false Orchestrator: swarm Server: Engine: Version: 18.04.0-ce API version: 1.37 (minimum version 1.12) Go version: go1.9.4 Git commit: 3d479c0 Built: Tue Apr 10 18:25:25 2018 OS/Arch: linux/amd64 Experimental: false
起動エラー メッセージは次のとおりです:
[root@docker ~]# systemctl start docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journ [root@docker ~]# [root@docker ~]# [root@docker ~]# [root@docker ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: failed (Result: start-limit) since 日 2018-04-22 20:52:39 CST; 5s ago Docs: https://docs.docker.com Process: 4810 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE) Main PID: 4810 (code=exited, status=1/FAILURE) 4月 22 20:52:39 docker.cgy.com systemd[1]: Failed to start Docker Application Container Engine. 4月 22 20:52:39 docker.cgy.com systemd[1]: Unit docker.service entered failed state. 4月 22 20:52:39 docker.cgy.com systemd[1]: docker.service failed. 4月 22 20:52:39 docker.cgy.com systemd[1]: docker.service holdoff time over, scheduling restart. 4月 22 20:52:39 docker.cgy.com systemd[1]: start request repeated too quickly for docker.service 4月 22 20:52:39 docker.cgy.com systemd[1]: Failed to start Docker Application Container Engine. 4月 22 20:52:39 docker.cgy.com systemd[1]: Unit docker.service entered failed state. 4月 22 20:52:39 docker.cgy.com systemd[1]: docker.service failed.
上記のエラーメッセージからはエラーの原因がわかりません。次に、dockerd
を使用して直接起動すると、出力情報の下部に次のようなエラー メッセージが表示されました。
[root@docker ~]# dockerd INFO[2018-04-22T21:12:46.111704443+08:00] libcontainerd: started new docker-containerd process pid=5903 INFO[0000] starting containerd module=containerd revision=773c489c9c1b21a6d78b5c538cd395416ec50f88 version=v1.0.3 。。。。。。省略一部分输出。。。。。。 INFO[0000] loading plugin "io.containerd.grpc.v1.introspection"... module=containerd type=io.containerd.grpc.v1 INFO[0000] serving... address="/var/run/docker/containerd/docker-containerd-debug.sock" module="containerd/debug" INFO[0000] serving... address="/var/run/docker/containerd/docker-containerd.sock" module="containerd/grpc" INFO[0000] containerd successfully booted in 0.002763s module=containerd Error starting daemon: error initializing graphdriver: overlay: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior. Reformat the filesystem with ftype=1 to en d_type support. Backing filesystems without d_type support are not supported.
最後のエラーによると デーモン起動エラー:
このブログを検索して解決策を見つけました。
https://blog.csdn.net/liu9718214/article/details/79134900
具体的な解決策は次のとおりです:
vim /etc/sysconfig/docker
次のコンテンツを追加します:
OPTIONS="--selinux-enabled --log-driver=journald --signature-verification=false"
/etc/docker/daemon.json次のコンテンツを追加します:
{ "registry-mirrors": ["http://4a1df5ef.m.daocloud.io"], # 是用来pull容器加速用的,跟此次问题无关。 "storage-driver": "devicemapper" # 解决此次问题 }その後、docker を再起動して問題を解決しますSimply:
[root@docker ~]# systemctl restart docker [root@docker ~]# [root@docker ~]# [root@docker ~]# ps aux | grep docker root 5922 1.7 1.6 528432 62568 ? Ssl 21:15 0:00 /usr/bin/dockerd root 5927 1.1 0.5 356984 22100 ? Ssl 21:15 0:00 docker-containerd --config /var/run/docker/containerd/containerd.toml root 6028 0.0 0.0 112664 964 pts/0 S+ 21:15 0:00 grep --color=auto dockerError 2: iptables failedFirewallDfirewalld は CentOS-7 で導入され、ファイアウォールの最下層はデータ フィルタリングに iptables を使用するように構築されています。これにより、Docker との競合が発生する可能性があります。 firewalld が起動または再起動すると、DOCKER ルールが iptables から削除されるため、Docker の通常の動作に影響します。 Systemd を使用している場合、Docker よりも前に firewalld が起動しますが、Docker の起動後に firewalld を起動または再起動する場合は、Docker プロセスを再起動する必要があります。 システム:
[root@controller ~]# cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core)
[root@controller ~]# docker run -it -P docker.io/nginx /usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint gloomy_kirch (10289e7a87e65771da90cda531951b7339bee9cb5953474460451cd48013aff0): iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 32810 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1).
#CentOS 7下执行 [root@controller ~]# systemctl restart firewalldDockerデーモンプロセスを再起動します
[root@controller ~]# systemctl restart dockerコンテナ内でnginxを再度実行すると、エラーは発生しません
[root@controller ~]# docker run -it --name nginx -p 80:80 -v /www:/wwwroot docker.io/nginx /bin/bash root@a8a92c8f7760:/#
Apr 27 13:51:59 master systemd: Started Docker Storage Setup. Apr 27 13:51:59 master systemd: Starting Docker Application Container Engine... Apr 27 13:51:59 master dockerd-current: time="2018-04-27T13:51:59.088441356+08:00" level=warning msg="could not change group /var/run/docker.sock to docker: group docker not found" Apr 27 13:51:59 master dockerd-current: time="2018-04-27T13:51:59.091166189+08:00" level=info msg="libcontainerd: new containerd process, pid: 20930" Apr 27 13:52:00 master dockerd-current: Error starting daemon: error initializing graphdriver: devmapper: Unable to take ownership of thin-pool (docker--vg-docker--pool) that already has used data blocks Apr 27 13:52:00 master systemd: docker.service: main process exited, code=exited, status=1/FAILURE Apr 27 13:52:00 master systemd: Failed to start Docker Application Container Engine. Apr 27 13:52:00 master systemd: Unit docker.service entered failed state. Apr 27 13:52:00 master systemd: docker.service failed理由: /var/lib/ docker/devicemapper/metadata/ のメタデータが失われます回避策:https://bugzilla.redhat.com/show_bug.cgi?id=1321640#c5Ericパリ 2016-04-27 08:20:10 EDT
I feel like the kcs kinda misses telling users the actual problem. Nor does it really make it clear the solution. IF you are using device mapper (instead of loopback) /var/lib/docker contains metadata informing docker about the contents of the device mapper storage area. If you delete /var/lib/docker that metadata is lost. Docker is then able to detect that the thin pool has data but docker is unable to make use of that information. The only solution is to delete the thin pool and recreate it so that both the thin pool and the metadata in /var/lib/docker will be empty.解決策:
rm -rf /var/lib/docker/*
rm -rf /etc/sysconfig/docker-storage
lvremove /dev/docker-vg/docker-pool
cat <<EOF > /etc/sysconfig/docker-storage-setup VG=docker-vg EOF
docker-storage-setup
systemctl start docker
[root@backup-system cpu]# docker run -ti --name hkp_ubuntu --cpuset-cpus=0-3 ubuntu bash docker: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.go:326: applying cgroup configuration for process caused: failed to write "0-3\n" to "/sys/fs/cgroup/cpuset/docker/cpuset.cpus": write /sys/fs/cgroup/cpuset/docker/cpuset.cpus: invalid argument: unknown.
このエラーは、この cgroup の CPU が他の cgroup によって使用されているため、排他を設定できません。現在の具体的な理由は、実験中に新しいコンテナ ディレクトリがしたがって、まず各 cgroup の cpuset.cpus をチェックして調整し、現在の cgroup で使用されている CPU が実際にその cgroup にのみ割り当てられていることを確認し、この時点で cpu_exclusive を設定する必要があります。
/sys/fs/cgroup/cpuset/ に作成され、container/cpuset.cpus が設定されたためです。 0-3
[root@backup-system docker]# cat /sys/fs/cgroup/cpuset/container/cpuset.cpus 0-3
Solution:
/sys/fs/cgroup/cpuset/container/cpuset.cpus を空に設定すると、上記の問題が発生します解決されます。
docker ビデオ チュートリアル 」
以上がdocker起動時のエラーの解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。