侧边栏壁纸
  • 累计撰写 81 篇文章
  • 累计创建 20 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

docker常见问题

心生向往
2023-11-28 / 0 评论 / 0 点赞 / 655 阅读 / 334 字

启动后使用命令卡顿

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$
0

评论区