0 前言
Docker 官网的安装卸载教程其实是很详细的,但是在 WSL2 Ubuntu-20.04 环境中安装卸载 Docker 时,还是会有小错误蹦出来干扰一下,所以在此记录出来,希望能帮到大家
1 安装
首先贴出来官方教程——Ubuntu 环境安装 Docker 官方教程
我是通过仓库安装,但因为 Docker 官方仓库是外网,贼慢,所以我用了阿里云镜像仓库,这个在下文会提到。
- 卸载旧版本
haha@DESKTOP:~$ sudo apt-get remove docker docker-engine docker.io containerd runc
- 更新 apt package索引,并安装一些支持 apt 通过 HTTPS 使用仓库的包
haha@DESKTOP:~$ sudo apt-get update
haha@DESKTOP:~$ sudo apt-get install > apt-transport-https > ca-certificates > curl > gnupg > lsb-release
- 添加 Docker 的官方 GPG 密钥
haha@DESKTOP:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加仓库
官方命令如下
haha@DESKTOP:~$ echo > "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu > $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
我们替换其中的官方仓库地址为阿里云镜像地址
haha@DESKTOP:~$ echo > "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu > $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker 引擎
haha@DESKTOP:~$ sudo apt-get update
haha@DESKTOP:~$ sudo apt-get install docker-ce docker-ce-cli containerd.io
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
docker-ce-rootless-extras docker-scan-plugin pigz slirp4netns
Suggested packages:
aufs-tools cgroupfs-mount | cgroup-lite
The following NEW packages will be installed:
containerd.io docker-ce docker-ce-cli docker-ce-rootless-extras docker-scan-plugin pigz slirp4netns
0 upgraded, 7 newly installed, 0 to remove and 246 not upgraded.
Need to get 104 MB of archives.
After this operation, 448 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 containerd.io amd64 1.4.9-1 [24.7 MB]
Get:2 http://archive.ubuntu.com/ubuntu focal/universe amd64 pigz amd64 2.4-1 [57.4 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal/universe amd64 slirp4netns amd64 0.4.3-1 [74.3 kB]
Get:4 http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 docker-ce-cli amd64 5:20.10.7~3-0~ubuntu-focal [41.4 MB]
Get:5 http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 docker-ce amd64 5:20.10.7~3-0~ubuntu-focal [24.8 MB]
Get:6 http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 docker-ce-rootless-extras amd64 5:20.10.7~3-0~ubuntu-focal [9063 kB]
Get:7 http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 docker-scan-plugin amd64 0.8.0~ubuntu-focal [3889 kB]
Fetched 104 MB in 12s (8627 kB/s)
Selecting previously unselected package pigz.
(Reading database ... 39964 files and directories currently installed.)
Preparing to unpack .../0-pigz_2.4-1_amd64.deb ...
Unpacking pigz (2.4-1) ...
Selecting previously unselected package containerd.io.
Preparing to unpack .../1-containerd.io_1.4.9-1_amd64.deb ...
Unpacking containerd.io (1.4.9-1) ...
Selecting previously unselected package docker-ce-cli.
Preparing to unpack .../2-docker-ce-cli_5%3a20.10.7~3-0~ubuntu-focal_amd64.deb ...
Unpacking docker-ce-cli (5:20.10.7~3-0~ubuntu-focal) ...
^[[CSelecting previously unselected package docker-ce.
Preparing to unpack .../3-docker-ce_5%3a20.10.7~3-0~ubuntu-focal_amd64.deb ...
Unpacking docker-ce (5:20.10.7~3-0~ubuntu-focal) ...
Selecting previously unselected package docker-ce-rootless-extras.
Preparing to unpack .../4-docker-ce-rootless-extras_5%3a20.10.7~3-0~ubuntu-focal_amd64.deb ...
Unpacking docker-ce-rootless-extras (5:20.10.7~3-0~ubuntu-focal) ...
Selecting previously unselected package docker-scan-plugin.
Preparing to unpack .../5-docker-scan-plugin_0.8.0~ubuntu-focal_amd64.deb ...
Unpacking docker-scan-plugin (0.8.0~ubuntu-focal) ...
Selecting previously unselected package slirp4netns.
Preparing to unpack .../6-slirp4netns_0.4.3-1_amd64.deb ...
Unpacking slirp4netns (0.4.3-1) ...
Setting up slirp4netns (0.4.3-1) ...
Setting up docker-scan-plugin (0.8.0~ubuntu-focal) ...
Setting up containerd.io (1.4.9-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
Setting up docker-ce-cli (5:20.10.7~3-0~ubuntu-focal) ...
Setting up pigz (2.4-1) ...
Setting up docker-ce-rootless-extras (5:20.10.7~3-0~ubuntu-focal) ...
Setting up docker-ce (5:20.10.7~3-0~ubuntu-focal) ...
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
invoke-rc.d: could not determine current runlevel
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3) ...
- 查看 Docker 版本
haha@DESKTOP:~$ sudo docker version
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:56:38 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
- 启动 Docker 服务
我们在很多教程都可以看到,对于unbuntu系统启动服务时都是使用systemctl命令,但是在 WSL2 Ubuntu-20.04来讲,并没有使用 systemd 管理Linux上的服务,使用的是经典的SysV init(sysvinit)系统。具体可以看这篇文章——修复 "System has not been booted with systemd as init system "的错误
matt@DESKTOP-LKRS69M:/var/lib$ sudo systemctl start docker
System has not been booted with systemd as init system (PID 1). Can‘t operate.
Failed to connect to bus: Host is down
我们通过如下命令来启动服务
haha@DESKTOP:~$ sudo service docker start
* Starting Docker: docker [ OK ]
- 运行 hello-world 镜像
haha@DESKTOP:~$ sudo docker run hello-world
- 查看镜像
haha@DESKTOP:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 4 months ago 13.3kB
2 卸载 Docker
- 卸载
sudo apt-get purge docker-ce docker-ce-cli containerd.io
Images, containers, volumes, or customized configuration files on your host are not automatically removed. To delete all images, containers, and volumes:
- 删除目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd