Browse Source

1. docker 踩坑

kindring 1 year ago
parent
commit
8e8c863f73
1 changed files with 95 additions and 0 deletions
  1. 95 0
      docker/安装踩坑记录.md

+ 95 - 0
docker/安装踩坑记录.md

@@ -0,0 +1,95 @@
+# 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
+```
+- 没有异常输出,测试使用镜像
+
+
+