启动后使用命令卡顿
containerd 服务启动失败,使用命令 journalctl -xe -u containerd 查看日志如下所示:
docker panic invalid freelist pagexx
首先得根据这个 panic 的堆栈,调用关系是 main.main -> cobra -> docker daemon -> daemon.(*Daemon).restore -> initNetworkController -> libnetwork/datastore/cache -> boltdb
docker 使用了 boltdb 存储了网络信息成 db 文件,但是这个 db 文件损坏了,导致读取字节序列化错误类型,去 docker 的目录 find 下:
[root@weizb-2 ~]# find /var/lib/docker -type f -size -5M -name '*.db' | grep -v overlay
/var/lib/docker/volumes/metadata.db
/var/lib/docker/network/files/local-kv.db
/var/lib/docker/buildkit/containerdmeta.db
/var/lib/docker/buildkit/snapshots.db
/var/lib/docker/buildkit/metadata_v2.db
/var/lib/docker/buildkit/cache.db
改名 db 文件重启 docker 解决
mv /var/lib/docker/network/files/local-kv.db{,.bak}
systemctl restart docker
重启后,网络配置丢失。
root@ubutnu:/mydata# docker start 737171ee8f06
Error response from daemon: network c0cac53778b3c6234963c7195fc248c5a255e99908463bd7ba55be628a9746c8 not found
Error: failed to start containers: 737171ee8f06
docker network create -d bridge c0cac53778b3c6234963c7195fc248c5a255e99908463bd7ba55be628a9746c8
拉取镜像-设置代理
systemd, 命令行环境变量配置代理没用,
[docker]20$ cat proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxyhost:1081/"
Environment="HTTPS_PROXY=http://proxyhost:1081/"
Environment="NO_PROXY=localhost,127.0.0.1"
[docker]21$ cat deploy.sh
#!/bin/bash
set -e
pwd=$(dirname $0)
cd $pwd
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo cp proxy.conf /etc/systemd/system/docker.service.d/
sudo systemctl daemon-reload
[docker]22$
评论区