# docker安装踩坑 ## 根据官网安装`docker` ### 1. 移除可能安装的旧版本`docker`相关程序 ### 2. 添加`docker`仓库 ## 在`centerOS`上安装实战 > 一次具体的问题排查记录 #### 排查启动失败原因 1. 查看服务状态 ```shell sudo systemctl status docker ``` 2. 发现关键字`Unit docker.service entered failed state.` 3. 搜索得到提示,与防火墙有冲突 - 找到对应的[解决方案](https://mhsj.net/240.html) , 参考该文章的第三条,修改`docker`的配置文件`/etc/docker/daemon.json` ```shell sudo vim /etc/docker/daemon.json ``` - 输入如下内容 ```json { "iptables": false } ``` - 启动发现还是有问题,继续排查 - 还原配置文件 4. 使用`dockerd`来启动`docker`服务 - 命令 ```shell sudo dockerd ``` - 发现错误提示 `Failed to built-in GetDriver graph btrfs /var/lib/docker` - 找到对应[解决方案](https://blog.csdn.net/qq_44930737/article/details/125524492) - 查找系统文件系统类型 ```shell sudo parted -l ``` - 发现文件类型和该解决方案的文件类型一致`vfs` - 修改`docker`配置文件`/etc/docker/daemon.json` ```json { "storage-driver": "vfs" } ``` - 继续尝试启动,出现新问题 `Failed to program NAT chain: INVALID_ZONE: docker` > `failed to start daemon: Error initializing network controller: Error creating default "bridge" network: Failed to program NAT chain: INVALID_ZONE: docker` - `network`看起来是网络相关的错误,想到之前找到的防火墙冲突解决方案,尝试修改`docker`配置文件 - 添加`"iptables": false` ```shell "iptables": false ``` - 最终修改后的配置文件 ```json { "storage-driver": "vfs", "iptables": false } ``` - 尝试启动`docker`服务 ```shell sudo systemctl start docker ``` - 没有让看日志,直接查看服务状态(可能启动成功了) ```shell sudo systemctl status docker ``` - 服务成功处于运行中,开始尝试使用`docker`命令 ```shell sudo docker ps -a ``` 5. 测试`docker`命令 > 查看`docker`是否能够正常启动 - 查看`docker`版本 ```shell sudo docker version ``` - 发现异常`Cannot connect to the Docker daemon at unix` > Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? - 服务已经启动,但是`docker`命令无法连接到`docker`服务 - 尝试重启`docker`服务, ```shell sudo systemctl restart docker ``` 通过`tab`补全命令发现还有一个`docker.socket`服务,顺便也重启一下 ```shell sudo systemctl restart docker.socket ``` - 重启后再次查看`docker`版本 ```shell sudo docker version ``` - 没有异常输出,测试使用镜像