不要使用Linux发行版仓库中的Docker(应使用官方的docker-ce软件)
太长没看
docker: Error response from daemon: failed to create task for container: failed to create shim task: ttrpc: cannot marshal unknown type: *task.CreateTaskRequest: unknown.
ERRO[0005] error waiting for container:
デフォルトでLinuxにインストールされる(ディストリビュージョンrepoの)Dockerを使ってはいけない。Docker公式のrepoのものを手動インストールすべき。
经纬
Docker容器用于运行的服务器崩溃后,除了/home和/srv以外的所有内容都进行了重新安装,之后Docker应用程序无法启动。
以下環境。
-
- OS: Linux Fedora 39
- マシン:デスクトップ実機PC(仮想化等なし)
症状 – symptoms
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:4f53e2564790c8e7856ec08e384732aa38dc43c52f02952483e3f003afbf23db
Status: Downloaded newer image for hello-world:latest
docker: Error response from daemon: failed to create task for container: failed to create shim task: ttrpc: cannot marshal unknown type: *task.CreateTaskRequest: unknown.
ERRO[0005] error waiting for container:
危重的状况
在各种网站上,人们告诉你尝试删除/var/lib/docker或改变权限之类的事情,但无论如何都没有任何变化。
搞清楚原因
看起来,似乎不能使用发行版的官方仓库。
$ docker info
Client:
Version: 24.0.5
Context: default
Debug Mode: false
Server:
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 1
Server Version: 24.0.5
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: journald
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: /usr/libexec/docker/docker-init
containerd version:
runc version:
init version:
Security Options:
seccomp
Profile: builtin
selinux
cgroupns
Kernel Version: 6.5.5-300.fc39.x86_64
Operating System: Fedora Linux 39 (Workstation Edition Prerelease)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 31.03GiB
Name: fedora
ID: xxxxxxxxxxxxxxxxxxxxxxxx
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: true
因此,需重新安装Docker官方版本。
再インストール方法
首先,删除与Docker相关的内容。
$ sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
一致した引数がありません: docker-client
一致した引数がありません: docker-client-latest
一致した引数がありません: docker-common
一致した引数がありません: docker-latest-logrotate
一致した引数がありません: docker-logrotate
一致した引数がありません: docker-engine-selinux
一致した引数がありません: docker-engine
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
削除中:
container-selinux noarch 2:2.222.0-1.fc39 @updates-testing 67 k
moby-engine x86_64 24.0.5-1.fc39 @fedora 108 M
未使用の依存関係の削除:
containerd x86_64 1.6.23-1.fc39 @fedora 137 M
トランザクションの概要
================================================================================
削除 3 パッケージ
解放された容量: 245 M
これでよろしいですか? [y/N]: y
然后,由于与podman和buildah有关,它们会引发冲突,所以不得不删除它们。(是否有解决方法?)
$ sudo dnf remove podman buildah
一致した引数がありません: buildah
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
削除中:
podman x86_64 5:4.7.0-1.fc39 @updates-testing 48 M
依存関係パッケージの削除:
toolbox x86_64 0.0.99.4-3.fc39 @fedora 7.3 M
未使用の依存関係の削除:
aardvark-dns x86_64 1.8.0-1.fc39 @updates-testing 2.3 M
catatonit x86_64 0.1.7-18.fc39 @fedora 1.1 M
conmon x86_64 2:2.1.8-2.fc39 @updates-testing 325 k
containers-common noarch 4:1-95.fc39 @fedora 120 k
containers-common-extra noarch 4:1-95.fc39 @fedora 0
criu x86_64 3.18-3.fc39 @fedora 1.5 M
criu-libs x86_64 3.18-3.fc39 @fedora 85 k
crun x86_64 1.9.2-1.fc39 @updates-testing 484 k
fuse-overlayfs x86_64 1.12-2.fc39 @fedora 131 k
gvisor-tap-vsock x86_64 6:0.7.0-6.fc39 @fedora 12 M
gvisor-tap-vsock-gvforwarder x86_64 6:0.7.0-6.fc39 @fedora 5.7 M
libbsd x86_64 0.11.7-5.fc39 @fedora 374 k
libmd x86_64 1.1.0-2.fc39 @fedora 107 k
libnet x86_64 1.2-9.fc39 @fedora 124 k
netavark x86_64 1.8.0-2.fc39 @updates-testing 9.8 M
qemu-user-static x86_64 2:8.1.1-1.fc39 @updates-testing 45 k
qemu-user-static-aarch64 x86_64 2:8.1.1-1.fc39 @updates-testing 12 M
qemu-user-static-alpha x86_64 2:8.1.1-1.fc39 @updates-testing 3.3 M
qemu-user-static-arm x86_64 2:8.1.1-1.fc39 @updates-testing 8.7 M
qemu-user-static-cris x86_64 2:8.1.1-1.fc39 @updates-testing 3.3 M
qemu-user-static-hexagon x86_64 2:8.1.1-1.fc39 @updates-testing 5.5 M
qemu-user-static-hppa x86_64 2:8.1.1-1.fc39 @updates-testing 3.4 M
qemu-user-static-loongarch64 x86_64 2:8.1.1-1.fc39 @updates-testing 3.6 M
qemu-user-static-m68k x86_64 2:8.1.1-1.fc39 @updates-testing 3.6 M
qemu-user-static-microblaze x86_64 2:8.1.1-1.fc39 @updates-testing 6.7 M
qemu-user-static-mips x86_64 2:8.1.1-1.fc39 @updates-testing 26 M
qemu-user-static-nios2 x86_64 2:8.1.1-1.fc39 @updates-testing 3.3 M
qemu-user-static-or1k x86_64 2:8.1.1-1.fc39 @updates-testing 3.3 M
qemu-user-static-ppc x86_64 2:8.1.1-1.fc39 @updates-testing 13 M
qemu-user-static-riscv x86_64 2:8.1.1-1.fc39 @updates-testing 8.8 M
qemu-user-static-s390x x86_64 2:8.1.1-1.fc39 @updates-testing 3.7 M
qemu-user-static-sh4 x86_64 2:8.1.1-1.fc39 @updates-testing 6.7 M
qemu-user-static-sparc x86_64 2:8.1.1-1.fc39 @updates-testing 10 M
qemu-user-static-x86 x86_64 2:8.1.1-1.fc39 @updates-testing 7.9 M
qemu-user-static-xtensa x86_64 2:8.1.1-1.fc39 @updates-testing 13 M
runc x86_64 2:1.1.8-1.fc39 @fedora 10 M
shadow-utils-subid x86_64 2:4.14.0-1.fc39 @fedora 58 k
slirp4netns x86_64 1.2.1-1.fc39 @fedora 93 k
トランザクションの概要
================================================================================
削除 40 パッケージ
解放された容量: 246 M
これでよろしいですか? [y/N]: y
然后重新安装。
按照这里的指示行动。
所以,我們所使用的 Fedora 39 仍然是測試版,並且 Docker 的版本尚未發布。
containerd.io 和
只需要安装docker-ce、docker-ce-cli、docker-compose和docker-ce-rootless即可。
首先,将按照手册的指示放入可以放入的物品。
$ sudo dnf config-manager \
--add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
repo の追加: https://download.docker.com/linux/fedora/docker-ce.repo
$ sudo dnf install containerd.io
依存関係が解決しました。
=========================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=========================================================================================================================================
インストール:
containerd.io x86_64 1.6.24-3.1.fc39 docker-ce-stable 33 M
依存関係のインストール:
container-selinux noarch 2:2.222.0-1.fc39 updates-testing 55 k
トランザクションの概要
=========================================================================================================================================
インストール 2 パッケージ
ダウンロードサイズの合計: 33 M
インストール後のサイズ: 115 M
これでよろしいですか? [y/N]: y
然后,手动处理剩下的内容。
从网络下载并安装。
$ sudo dnf install '/home/xxxx/ダウンロード/docker-ce-rootless-extras-24.0.6-1.fc38.x86_64.rpm' '/home/xxxx/ダウンロード/docker-compose-plugin-2.21.0-1.fc38.x86_64.rpm' '/home/xxxx/ダウンロード/docker-ce-cli-24.0.6-1.fc38.x86_64.rpm' '/home/xxxx/ダウンロード/docker-ce-24.0.6-1.fc38.x86_64.rpm'
依存関係が解決しました。
=========================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=========================================================================================================================================
インストール:
docker-ce x86_64 3:24.0.6-1.fc38 @commandline 24 M
docker-ce-cli x86_64 1:24.0.6-1.fc38 @commandline 7.1 M
docker-ce-rootless-extras x86_64 24.0.6-1.fc38 @commandline 3.9 M
docker-compose-plugin x86_64 2.21.0-1.fc38 @commandline 13 M
依存関係のインストール: container-selinux noarch 2:2.222.0-1.fc39 updates-testing 55 k
fuse-overlayfs x86_64 1.12-2.fc39 fedora 67 k
libcgroup x86_64 3.0-3.fc39 fedora 74 k
slirp4netns x86_64 1.2.1-1.fc39 fedora 47 k
トランザクションの概要
=========================================================================================================================================
インストール 7 パッケージ
合計サイズ: 48 M
ダウンロードサイズの合計: 189 k
インストール後のサイズ: 194 M
これでよろしいですか? [y/N]: y
已经结束了
这个运行正常了。
$ docker info
Client: Docker Engine - Community
Version: 24.0.6
Context: default
Debug Mode: false
Plugins:
compose: Docker Compose (Docker Inc.)
Version: v2.21.0
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 6
Running: 3
Paused: 0
Stopped: 3
Images: 11
Server Version: 24.0.6
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
runc version: v1.1.9-0-gccaecfc
init version: de40ad0
Security Options:
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.5.5-300.fc39.x86_64
Operating System: Fedora Linux 39 (Workstation Edition Prerelease)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 31.03GiB
Name: fedora
ID: xxxxxxxxxxxxxxxxxxxxxxxxxxx
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
正常运转。
$ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
结论:不要始终相信Distri官方仓库。
那个怎么样呢? (Nà gè ne?)