重启docker 报错

想重启docker, 如果都执行了以下不同的命令

sudo systemctl restart docker
sudo service docker restart
sudo systemctl start docker.service

都出现报错这个报错:Failed to restart docker.service: Unit docker.service not found.

这是因为在安装docker的时候没有使用官方安装包,也没有使用apt, 而是在安装ubuntu虚拟机的时候,顺带勾选了安装docker , 此时docker是使用snap进行安装的。

snap list可查看snap安装过的包

如果想要重启使用sudo snap restart docker

docker安装与卸载

由于我是之前由snap进行安装的docker, 无论根据文档怎样配置,镜像源地址就是不生效,于是想进行一个卸载重新安装

snap安装docker 卸载命令:sudo snap remove docker

安装docker 方法一

官方版本安装docker: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装完成后,可以把当前用户加入到docker分组中,这样后续运行docker命令可以不加sudo。

#添加当前用户到docker用户组
sudo usermod -aG docker $USER
#更新用户组
newgrp docker
安装docker 方法二

此方法参照:

这种安装方式需保证可以访问docker仓库地址https://download.docker.com/linux/ubuntu

  1. sudo apt update如果安装docker时候报错找不到docker,那这里使用sudo apt-get update)
  2. sudo apt install apt-transport-https ca-certificates curl software-properties-common
  3. /etc/apt/sources.list.d/docker.list文件中添加下面内容
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
  1. 添加秘钥,可以添加官方的和阿里的
// 官方
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
// 阿里
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

添加完毕以后,执行sudo apt-key fingerprint 0EBFCD88验证,正常情况下输出

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ 未知 ] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]
  1. 列出可用的版本apt-cache madison docker-ce

    选择要安装的特定版本,第二列是版本字符串,第三列是存储库名称,它指示包来自哪个存储库,以及扩展它的稳定性级别。要安装一个特定的版本,将版本字符串附加到包名中,并通过等号(=)分隔它们:
sudo apt-get install docker-ce=<VERSION>
如:
sudo apt-get install docker-ce=5:20.10.0~3-0~ubuntu-focal
  1. 安装最新docker-ce:sudo apt-get install -y docker-ce
  2. 查看是否安装成功:docker -v 或者 docker --version会输出对应的版本信息
  3. 将用户添加进docker组,这个方法一中已经说过了

ubuntu 修改拉取镜像源

  1. docker 换源的配置文件默认在/etc/docker/daemon.json, 若不存在自己创建即可
  2. 国内几个可用的镜像源
Docker 官方中国区:https://registry.docker-cn.com
网易:http://hub-mirror.c.163.com
中国科技大学:https://docker.mirrors.ustc.edu.cn
阿里云:https://y0qd3iq.mirror.aliyuncs.com

/etc/docker/daemon.json文件中增加如下内容

{
  "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"]
}

这里我指定的是阿里云,可以指定上面四个地址中的任何一个

  1. 重启docker服务,service docker restart
  2. 通过命令查看是否生效,docker info|grep Mirrors -A 1, 若成功,则输出
Registry Mirrors:
 https://y0qd3iq.mirror.aliyuncs.com/

然后在docker pull 就会很快了