Docker与银河麒麟的兼容性问题


背景

大过节的出差.
客户想迁移环境,
优先使用银河麒麟的系统. 

有一个需要使用容器docker运行nginx的的需求
结果发现被坑的很惨. 
所以记录一下

问题以及解决方案

安装完docker 后 发现 docker run 提示没有权限. 

docker: Error response from daemon: 
failed to create task for container: 
failed to create shim task: OCI runtime create failed: 
container_linux.go:318: starting container process caused 
"permission denied": unknown.

通过 docker version 进行查看: 
Client:
 Version:           24.0.9
 API version:       1.43
 Go version:        go1.20.13
 Git commit:        2936816
 Built:             Thu Feb  1 00:47:46 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.9
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.13
  Git commit:       fca702d
  Built:            Thu Feb  1 00:49:16 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.7.13
  GitCommit:        7c3aca7a610df76212171d200ca3811ff6096eb8
 runc:
  Version:          1.0.0-rc3
  GitCommit:
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

可以明显看到 runc的版本较低. 与 docker 二进制下载的版本不匹配

简单查询发现, 应该是兼容性不够好. 
百度出来的结果是 可能是 银河麒麟里面的 podman带的 runc 版本太低的问题. 
yum remove podman -y
发现会将级联的 runc 删除
再看一下 docker的版本, 其中 runc为:
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94

然后再启动docker
发现不在报错了.

关于问题反思

podman与原生的docker其实兼容性不好
国产系统的玩法还是比较不太瞻前顾后. 

建议还是需要完善验证才可.