0%
Docker#001#使用apt软件源在线安装方法

本文记录使用apt以及docker提供的源,安装docker相关软件的方法。

安装方法请参考官方文档:https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

添加apt源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Add Docker's official GPG key:
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl
$ sudo install -m 0755 -d /etc/apt/keyrings
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
$ sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

$ sudo apt-get update

执行过程如下图所示:

卸载非官方版本

我们知道Ubuntu的原始apt源中的docker并非docker官方维护的版本,所以我们在未添加docker官方源之前使用apt安装的版本,都是非官方版本。在安装官方版本之前,我们需要将这些非官方版本卸载掉,它们可能是如下名称:docker.io,docker-compose,docker-compose-v2,docker-doc,podman-docker等等。
由于无论官方或者非官方版本都依赖containerd和runc,为了不产生不必要的冲突,我们最好将他们一并卸载。

卸载非官方版本命令如下:

1
2
3
4
5
$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt remove $pkg; done
$
$ sudo rm -rf /var/lib/docker
$
$ sudo rm -rf /var/lib/containerd

注意:/var/lib/docker 和 /var/lib/containerd 存放着本机Docker映像文件等数据,如果不需要完全清空Docker环境,则谨慎删除!!

安装官方最新版本

安装命令如下:

1
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装过程如下所示:

mancode@manos:~$ 
mancode@manos:~$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  docker-ce-rootless-extras libslirp0 pigz slirp4netns
Suggested packages:
  aufs-tools cgroupfs-mount | cgroup-lite
The following NEW packages will be installed:
  containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin libslirp0 pigz slirp4netns
0 upgraded, 9 newly installed, 0 to remove and 111 not upgraded.
Need to get 117 MB of archives.
After this operation, 420 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 pigz amd64 2.6-1 [63.6 kB]
Get:2 https://download.docker.com/linux/ubuntu jammy/stable amd64 containerd.io amd64 1.6.28-1 [29.6 MB]
Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 libslirp0 amd64 4.6.1-1build1 [61.5 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy/universe amd64 slirp4netns amd64 1.0.1-2 [28.2 kB]
Get:5 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-buildx-plugin amd64 0.12.1-1~ubuntu.22.04~jammy [28.2 MB]                                                    
Get:6 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-ce-cli amd64 5:25.0.3-1~ubuntu.22.04~jammy [13.7 MB]                                                         
Get:7 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-ce amd64 5:25.0.3-1~ubuntu.22.04~jammy [24.3 MB]                                                             
Get:8 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-ce-rootless-extras amd64 5:25.0.3-1~ubuntu.22.04~jammy [9,313 kB]                                            
Get:9 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-compose-plugin amd64 2.24.5-1~ubuntu.22.04~jammy [12.1 MB]                                                   
Fetched 117 MB in 1min 7s (1,745 kB/s)                                                                                                                                                
Selecting previously unselected package pigz.
(Reading database ... 121725 files and directories currently installed.)
Preparing to unpack .../0-pigz_2.6-1_amd64.deb ...
Unpacking pigz (2.6-1) ...
Selecting previously unselected package containerd.io.
Preparing to unpack .../1-containerd.io_1.6.28-1_amd64.deb ...
Unpacking containerd.io (1.6.28-1) ...
Selecting previously unselected package docker-buildx-plugin.
Preparing to unpack .../2-docker-buildx-plugin_0.12.1-1~ubuntu.22.04~jammy_amd64.deb ...
Unpacking docker-buildx-plugin (0.12.1-1~ubuntu.22.04~jammy) ...
Selecting previously unselected package docker-ce-cli.
Preparing to unpack .../3-docker-ce-cli_5%3a25.0.3-1~ubuntu.22.04~jammy_amd64.deb ...
Unpacking docker-ce-cli (5:25.0.3-1~ubuntu.22.04~jammy) ...
Selecting previously unselected package docker-ce.
Preparing to unpack .../4-docker-ce_5%3a25.0.3-1~ubuntu.22.04~jammy_amd64.deb ...
Unpacking docker-ce (5:25.0.3-1~ubuntu.22.04~jammy) ...
Selecting previously unselected package docker-ce-rootless-extras.
Preparing to unpack .../5-docker-ce-rootless-extras_5%3a25.0.3-1~ubuntu.22.04~jammy_amd64.deb ...
Unpacking docker-ce-rootless-extras (5:25.0.3-1~ubuntu.22.04~jammy) ...
Selecting previously unselected package docker-compose-plugin.
Preparing to unpack .../6-docker-compose-plugin_2.24.5-1~ubuntu.22.04~jammy_amd64.deb ...
Unpacking docker-compose-plugin (2.24.5-1~ubuntu.22.04~jammy) ...
Selecting previously unselected package libslirp0:amd64.
Preparing to unpack .../7-libslirp0_4.6.1-1build1_amd64.deb ...
Unpacking libslirp0:amd64 (4.6.1-1build1) ...
Selecting previously unselected package slirp4netns.
Preparing to unpack .../8-slirp4netns_1.0.1-2_amd64.deb ...
Unpacking slirp4netns (1.0.1-2) ...
Setting up docker-buildx-plugin (0.12.1-1~ubuntu.22.04~jammy) ...
Setting up containerd.io (1.6.28-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
Setting up docker-compose-plugin (2.24.5-1~ubuntu.22.04~jammy) ...
Setting up docker-ce-cli (5:25.0.3-1~ubuntu.22.04~jammy) ...
Setting up libslirp0:amd64 (4.6.1-1build1) ...
Setting up pigz (2.6-1) ...
Setting up docker-ce-rootless-extras (5:25.0.3-1~ubuntu.22.04~jammy) ...
Setting up slirp4netns (1.0.1-2) ...
Setting up docker-ce (5:25.0.3-1~ubuntu.22.04~jammy) ...
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.
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
Scanning processes...                                                                                                                                                                  
Scanning linux images...                                                                                                                                                               

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
mancode@manos:~$ 

安装官方历史版本

如果我们需要安装官方历史版本,首选我们先查看当前源有哪些版本,然后使用apt按docker版本号安装。

第一步:使用如下命令,查看当前源中docker版本列表:

1
$ apt-cache madison docker-ce

如上命令执行结果如下所示:

第二步:使用如下命令,指定docker-ce和docker-ce-cli的版本安装,假如我们安装 5:23.0.3-1~ubuntu.22.04~jammy 版本:

1
2
$ SDV=5:23.0.3-1~ubuntu.22.04~jammy
$ sudo apt install docker-ce=$SDV docker-ce-cli=$SDV containerd.io docker-buildx-plugin docker-compose-plugin

验证官方版本

安装完毕之后,我们使用docker运行 hello-world 映像,如果正常安装和运行,会打印相关信息并且退出。

使用如下命令:

1
$ sudo docker run hello-world

执行结果如下:

看到如上信息之后,表明我们的docker安装并且运行成功。

卸载官方版本

存储在 /var/lib/docker中的 Images, containers, volumes, and networks,并不会因为我们卸载docker而随着删除,所以必要时需要清除数据目录。更多信息请参考卸载Docker

卸载官方版本命令如下:

1
2
3
4
5
$ sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
$
$ sudo rm -rf /var/lib/docker
$
$ sudo rm -rf /var/lib/containerd

注意:/var/lib/docker 和 /var/lib/containerd 存放着本机Docker映像文件等数据,如果不需要完全清空Docker环境,则谨慎删除!!

启动和停止Docker

查看Docker运行状态命令:

1
$ sudo systemctl status docker

停止Docker命令:

1
$ sudo systemctl stop docker

启动Docker命令:

1
$ sudo systemctl start docker

上述命令使用实例如下:

官方资料