WSL安装Docker与密钥排错
前言
最近在学习go语言,在社区里看到一篇用docker部署go语言的帖子,很是有趣,便想着自己折腾一下试试,刚好win下面有WSL,可以很方便的部署与测试,但是过程中还是踩坑了不少,所以来记录一下。
正文
(1)卸载老版本
1 | sudo apt-get remove docker docker-engine docker.io containerd runc |
如果是首次安装,请忽略。
(2)更新apt包索引
1 | sudo apt-get update |
(3)安装 apt 依赖包,用于通过HTTPS来获取仓库
1 | sudo apt-get install \ |
(4)添加Docker的官方GPG密钥
1 | 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的密钥:
1 | 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)验证密钥
1 | sudo apt-key fingerprint 0EBFCD88 |
(6)设置稳定版仓库
1 | sudo add-apt-repository \ |
设置完之后请更新apt包索引:
sudo apt-get update
。
(7)安装最新版本的Docker Engine-Community
1 | sudo apt-get install docker-ce docker-ce-cli containerd.io |
要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本:
1
2
3
4
5
6
7
8
9 $ 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)测试是否安装成功
1 | sudo docker run hello-world |
请确保电脑联网,会自动下载该测试镜像。
(9)为普通用户增加权限
docker默认普通用户是没有权限的,可以通过下列命令为普通用户增加docker运行的权限。
1 | #添加你的用户进docker用户组 |