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组并更新用户组。

sudo usermod -aG docker ${USER}
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相关配置文件:

sudo rm -rf /var/lib/docker
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配置镜像源:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
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有问题。删掉就行了。不然就重新配一下。

cd /etc/docker
sudo vim daemon.json

加上这段代码:

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

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值