title: WSL安装Docker与密钥排错
top_img: false
tags:
  - WSL
  - Docker
categories:
  - Linux
cover: false
abbrlink: e5f6a19a
date: 2023-12-10 10:18:55
copyright:
comments:

前言

最近在学习go语言,在社区里看到一篇用docker部署go语言的帖子,很是有趣,便想着自己折腾一下试试,刚好win下面有WSL,可以很方便的部署与测试,但是过程中还是踩坑了不少,所以来记录一下。

正文

(1)卸载老版本

sudo apt-get remove docker docker-engine docker.io containerd runc

如果是首次安装,请忽略。

(2)更新apt包索引

sudo apt-get update

(3)安装 apt 依赖包,用于通过HTTPS来获取仓库

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

(4)添加Docker的官方GPG密钥

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

排错

添加docker的GPG密钥之后,或者更新apt包索引,会出现一个警告:

这个警告大概的意思是我们把软件包的秘钥保存到了 /etc/apt/trusted.gpg 这个老版本系统的文件里。

这里系统提示只是告诉你新版系统不能把秘钥放在 /etc/apt/trusted.gpg 里,但是没告诉我们新版系统的秘钥究竟要放在那里。

其实答案很简单,就在 /etc/apt/trusted.gpg.d 目录下:

在执行完第4步添加密钥之后,可以看到上述目录中出现了一个 trusted.gpg 文件,这就是我们添加的密钥。

可以通过 sudo apt-key list 来查看当前系统中的密钥:

每个秘钥的第二行都有一串十六进制的编码,这个编码就是这个秘钥的 id

导出我们添加的docker的密钥:

apt-key export 0EBFCD88 | gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

1、使用root用户执行, sudo 命令权限是不够的。

2、导出时的秘钥只需要后8位的 id 即可,而且 id 之间没有空格。

将秘钥导出后就可以把 /etc/apt 目录下 trusted.gpg 文件删除了。

继续正文

(5)验证密钥

sudo apt-key fingerprint 0EBFCD88

(6)设置稳定版仓库

sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stable"

设置完之后请更新apt包索引: sudo apt-get update

(7)安装最新版本的Docker Engine-Community

sudo apt-get install docker-ce docker-ce-cli containerd.io

要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本:

$ apt-cache madison docker-ce

  docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
  docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
  docker-ce | 18.06.1~ce~3-0~ubuntu       | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
  docker-ce | 18.06.0~ce~3-0~ubuntu       | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
  ...

$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

(8)测试是否安装成功

sudo docker run hello-world

请确保电脑联网,会自动下载该测试镜像。

(9)为普通用户增加权限

docker默认普通用户是没有权限的,可以通过下列命令为普通用户增加docker运行的权限。

#添加你的用户进docker用户组
sudo usermod -aG docker <username>
#更新docker用户组
newgrp docker
#测试普通用户权限
docker run hello-world