Snap Docker 配置 IPV6 和修复遗留错误

原因是服务器上有个 Docker 服务需要用 IPV6 访问某 API
该 API 是双栈的,但是 IPV4 不通,不得已只能用 V6 来访问

使用 Ubuntu 的 apt 安装的 Docker 默认用的 snap 镜像,配置文件位置和其他方式安装的不同,导致识别不到配置文件

一开始我发现并不存在/etc/docker/daemon.json文件
便创建了一个新的

1
2
3
4
5
6
7
8
cat >/etc/docker/daemon.json <<EOF
{
"ipv6": true,
"fixed-cidr-v6": "fd00::/80",
"experimental": true,
"ip6tables": true
}
EOF

然后使用

1
sudo systemctl restart docker

准备重启,发现没有找到 docker 服务???

运行一下list发现 snap 的 docker 用的是snap.docker.dockerd作为服务名

1
sudo systemctl restart snap.docker.dockerd

重启 Docker 后,没有任何变化,还是没有分配 IPV6 的地址,也还是没办法访问 IPV6 网络

Google 了半天发现全都是相同的内容,直到发现了How to config the daemon settings?

原来 snap 的 docker 配置文件路径不同,不过这篇文章写的路径也不对

不是

1
/var/snap/docker/current/etc/docker/daemon.json

实际应该是

1
/var/snap/docker/current/config/daemon.json

修改了daemon.json后,可以正确获取到 IPV6 也可以正常从内到外访问 IPV6 的资源了


然后是最近运行 docker-compose 提示一直错误,版本过低

1
2
3
4
5
/snap/docker/2281/lib/python3.6/site-packages/paramiko/transport.py:33:
CryptographyDeprecationWarning:
Python 3.6 is no longer supported by the Python core team.
Therefore, support for it is deprecated in cryptography and will be removed in a future release.
from cryptography.hazmat.backends import default_backend

原来是 docker-compose 已经过时了,新版的命令是 docker compose (去掉了横线)
要是用习惯了可以给它创建一个别名

1
alias docker-compose='docker compose'

Snap Docker 配置 IPV6 和修复遗留错误
https://cuojue.org/read/snap-docker-daemon-config.html
作者
WeiCN
发布于
2022年11月9日
许可协议