当前位置:   article > 正文

Deepin Docker踩坑纪实

deepin docker

最近做课设需要使用Deepin开发OpenHarmony 轻量系统,配置环境时出现了很多问题,遂打算采用OpenHarmony官方的Docker进行开发。这里将汇总一下遇到的问题,以备参考。

1. Failed to connect. Is Docker running?

此问题在以下场景中触发:

  • 直接执行docker命令提示Failed to connect. Is Docker running 
  • Visual Studio Code Docker插件显示不出image与container.
  • 执行docker run/pull提示。

原因:

docker使用unix socket进行通讯,但是unix socket属于root用户,但是普通用户需要使用sudo才能开启root权限,但是普通的操作并没有root权限。

解决方案:

将用户加入到docker用户组,使当前用户具备执行Docker相关指令的权限。

1. 执行以下命令,如果没有在结果中看到"docker"字样,则需要把用户加入到docker组。一般而言docker组在安装docker时就已创建好。

groups $USER

2. 执行以下命令将当前用户加入到docker组并更新用户组。

  1. sudo usermod -aG docker ${USER}
  2. newgrp docker

3. 重启docker服务

 sudo systemctl restart docker

4. 重新打开vscode或注销用户重新登录。

 参考:​​​​​​vscode中docker插件无法连接_ximikang的博客-CSDN博客

docker加入用户组 - woodx - 博客园 (cnblogs.com)

2.docker run报错:Error response from daemon: unable to find "cpu" in controller set: unknown.

cgroup相关问题,查阅google、官方社区都没有找到合适的解决方案。github相似的issue如下:
Error response from daemon: unable to find "cpuacct" in controller set: unknown · Issue #552 · docker/for-linux (github.com)

raspbian: docker: Error response from daemon: unable to find "net_prio" in controller set: unknown. · Issue #729 · docker/for-linux (github.com)

我的解决方案:

完全卸载docker,并卸载掉其所有配置文件:

由于我使用的是apt-get下载的,所以卸载方式是:

1. 首先停止docker服务

systemctl docker stop

2. 调用apt-get的remove卸载docker.io包

sudo apt-get remove docker.io

3.卸载docker相关配置文件:

  1. sudo rm -rf /var/lib/docker
  2. sudo rm -rf /var/lib/containerd

 如果此时你发现docker指令仍然可以执行,不妨在根目录(或~目录)执行which docker,把找到的都删了。

之后重启Terminal应该就可以了。

随后使用curl下载安装docker包

首先使用apt更新/下载crul,这我就不赘述了,一般deepin都自带curl。

执行以下代码下载docker.使用阿里云镜像加速。

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

下载完毕后,按照1中的方法将当前用户加入到docker用户组,随后启动docker服务。

执行以下代码:

docker run hello-world

此代码会拉取一个hello-world示例镜像并运行,出现Hello from docker字样则表示docker安装成功。

参考:Deepin系统安装docker - 知乎 (zhihu.com) 

 拉取镜像时可能还会出现如下问题:

3. error pulling image configuration: download failed after attempts=6: dial tcp 104.18.125.25:443: i/o timeout

因为众所周知的原因,从docker hub中拉取镜像超时了。需要为docker配置镜像源:

  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
  5. }
  6. EOF
  7. sudo systemctl daemon-reload
  8. sudo systemctl restart docker

参考:error pulling image configuration: download failed after attempts=6: dial tcp 104.18.125.25:443: i/o_网络不安全️的博客-CSDN博客 

4.Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon

/etc/docker/daemon.json有问题。删掉就行了。不然就重新配一下。

  1. cd /etc/docker
  2. sudo vim daemon.json

加上这段代码:

  1. {
  2. "registry-mirrors": ["https://registry.docker-cn.com"]
  3. }

老规矩,重启docker服务,解决。

本帖持续更新,也欢迎大家遇到问题来交流。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/919676
推荐阅读
相关标签
  

闽ICP备14008679号