系统环境:ubuntu 22.04 使用Portainer可视化管理docker容器
1.Portainer启动容器失败,报500错误。
并且Docker容器也突然抽风启动和重启失败,说daemon没有在运行
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
查看日志发现报错原因是找不到iptables
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found
但是系统已经安装了 iptables,反复重装docker但仍然报同样的错误
ps@ps:~$ iptables -V
iptables v1.8.7 (legacy)
在issue 里有同样因为iptables问题不能启动daemon,提出的解决方案
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo dockerd
使用这种方式启动dockerd就可以正常启动daemon,并且iptables问题也可以解决
无论是使用systemctl还是service重启和启动都仍会出现之前的问题
sudo systemctl restart docker
2.在解决前面的问题后,docker可以正常启动,但对于部分容器仍然启动不了
Handler for GET /v1.37/containers/9313a0eda5fc7be85fdc2b1c5a9ff7f137bb4d6befa03f9ed06c837ac0f467d4/json returned error: write unix /var/run/docker.sock->@: write: broken pipe
在查看日志文件和分析后,发现可能是nvidia-docker的问题
Error response from daemon: unknown or invalid runtime name: nvidia Error: failed to start containers: 26224401c2e2
但是nvidia-smi正常,并且重装多次nvidia-docker后仍然有问题
问题并不是出在nvidia-docker安装上,而是没有使用nvidia-docker去监控docker容器
sudo apt-get install -y nvidia-container-toolkit
##安装完要启动去监控docker容器
sudo nvidia-ctk runtime configure --runtime=docker