点击学习开源企业 Docker 镜像仓库 Harbor 软件 教程。
下面将介绍如何在 Ubuntu22.04 系统上面安装 Docker 服务,步骤如下:
卸载默认安装的 Docker(或者旧版本 Docker)
安装 Docker 必要依赖或支持工具
添加 Docker 官方 GPG key
添加 APT 源
更新源
安装最新版本 Docker
查看 Docker 版本
查看 Docker 运行状态
Docker 仓库地址配置
执行“sudo apt-get remove docker docker-engine docker.io containerd runc”命令卸载操作系统默认安装的 Docker,或者旧版本 Docker(即 docker-io),如下:
hxstrive@g450:~$ sudo apt-get remove docker docker-engine docker.io containerd runc
[sudo] password for hxstrive:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package docker-engine执行“sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release”命令,去安装如下依赖工具:
apt-transport-https:工具包允许 APT(Advanced Packaging Tool)使用 HTTPS 协议来访问软件仓库。当你需要从支持 HTTPS 的软件源(如一些官方和第三方的软件仓库)安装软件包时,apt-transport-https 是必不可少的。例如,在安装一些需要从特定的安全软件源获取的软件时,就会用到这个工具包。
ca-certificates:包含了一组受信任的证书颁发机构(CA)的证书。在使用需要安全连接的软件和服务时,如浏览器访问安全网站、使用安全的软件仓库等,ca-certificates 确保了连接的安全性。如果没有正确安装这些证书,可能会出现连接失败或安全警告。
curl:一个强大的命令行工具,用于通过各种网络协议(如 HTTP、HTTPS、FTP 等)从服务器下载文件或与服务器进行交互。
software-properties-common:提供了用于管理软件仓库的工具和库。当你需要添加一个新的软件源或者更改软件源的设置时,software-properties-common 提供了方便的命令行工具。例如,你可以使用它来添加一个 PPA(Personal Package Archive),以便安装特定的软件版本或获取最新的开发版本。
gnupg:GNU Privacy Guard 的缩写,是一个用于加密、签名和验证文件的工具。在安装软件包时,系统会使用 gnupg 来验证软件包的签名,以确保软件的安全性。此外,开发者和用户也可以使用 gnupg 来加密文件、发送加密邮件等,保护敏感信息的安全。
lsb-release:提供了有关 Linux 标准基础(Linux Standard Base,LSB)的信息。在一些脚本和软件中,需要根据系统的发行版信息来进行不同的操作。例如,某些软件可能需要根据不同的 Linux 发行版进行特定的配置。lsb-release 可以提供这些信息,使得软件能够更好地适应不同的系统环境。
hxstrive@g450:~$ sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
lsb-release is already the newest version (11.1.0ubuntu4).
...
Processing triggers for gnome-menus (3.36.0-1ubuntu3) ...
Processing triggers for libglib2.0-0:amd64 (2.72.4-0ubuntu2.3) ...
Processing triggers for man-db (2.10.2-1) ...使用 curl 命令添加 Docker 官方 GPG key ,⚠️注意:目前国内现在访问可能会存在问题,导致无法访问:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 阿里源(推荐使用阿里的gpg KEY)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg因此,国内推荐使用阿里云的 GPG key(当然,你也可以使用其他国内源),命令如下:
hxstrive@g450:~$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg下面是添加 Docker 官网的 APT 源命令:
echo "deb [arch=$(dpkg --print-architecture) 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⚠️注意,国内访问可能存在问题,因此,建议使用阿里 APT 源:
hxstrive@g450:~$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null前面添加了源地址,接下来使用“apt update”和“apt-get update”命令来更新源:
apt update:
hxstrive@g450:~$ sudo apt update
Hit:1 http://mirrors.aliyun.com/ubuntu jammy InRelease
...
Get:40 http://mirrors.aliyun.com/ubuntu jammy-proposed/multiverse amd64 c-n-f Metadata [400 B]
Fetched 10.1 MB in 8s (1,253 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
93 packages can be upgraded. Run 'apt list --upgradable' to see them.apt-get update:
hxstrive@g450:~$ sudo apt-get update
Hit:1 http://mirrors.aliyun.com/ubuntu jammy InRelease
...
Hit:6 https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy InRelease
Hit:7 https://packages.redis.io/deb jammy InRelease
Reading package lists... Done执行“sudo apt install docker-ce docker-ce-cli containerd.io”命令,安装 Docker:
hxstrive@g450:~$ sudo apt install docker-ce docker-ce-cli containerd.io
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
libflashrom1 libftdi1-2
Use 'sudo apt autoremove' to remove them.
...
Setting up docker-ce (5:27.1.1-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.
Setting up git (1:2.34.1-1ubuntu1.11) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.8) ...使用“sudo docker version”命令查看 Docker 版本信息,如下:
hxstrive@g450:~$ sudo docker version
Client: Docker Engine - Community
Version: 27.1.1
API version: 1.46
Go version: go1.21.12
Git commit: 6312585
Built: Tue Jul 23 19:57:01 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 27.1.1
API version: 1.46 (minimum version 1.24)
Go version: go1.21.12
Git commit: cc13f95
Built: Tue Jul 23 19:57:01 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.19
GitCommit: 2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41
runc:
Version: 1.7.19
GitCommit: v1.1.13-0-g58aa920
docker-init:
Version: 0.19.0
GitCommit: de40ad0使用“sudo systemctl status docker”命令查看 Docker 运行状态,如下:
hxstrive@g450:~$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-08-09 20:28:35 CST; 4min 16s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 41536 (dockerd)
Tasks: 8
Memory: 41.9M
CPU: 719ms
CGroup: /system.slice/docker.service
└─41536 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
8月 09 20:28:34 g450 systemd[1]: Starting Docker Application Container Engine...
8月 09 20:28:34 g450 dockerd[41536]: time="2024-08-09T20:28:34.858760410+08:00" level=info msg="Starting up"
8月 09 20:28:34 g450 dockerd[41536]: time="2024-08-09T20:28:34.861953113+08:00" level=info msg="detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/system>
8月 09 20:28:35 g450 dockerd[41536]: time="2024-08-09T20:28:35.102897252+08:00" level=info msg="Loading containers: start."
8月 09 20:28:35 g450 dockerd[41536]: time="2024-08-09T20:28:35.706991958+08:00" level=info msg="Loading containers: done."
8月 09 20:28:35 g450 dockerd[41536]: time="2024-08-09T20:28:35.766333681+08:00" level=info msg="Docker daemon" commit=cc13f95 containerd-snapshotter=false storage-driver=overlay2 version=2>
8月 09 20:28:35 g450 dockerd[41536]: time="2024-08-09T20:28:35.767030413+08:00" level=info msg="Daemon has completed initialization"
8月 09 20:28:35 g450 dockerd[41536]: time="2024-08-09T20:28:35.845526681+08:00" level=info msg="API listen on /run/docker.sock"
8月 09 20:28:35 g450 systemd[1]: Started Docker Application Container Engine.由于 Docker 默认的仓库地址在国外,国内访问存在限制,有时可能还不能访问,因此需要使用国内的 Docker 仓库地址进行替换。替换步骤如下:
(1)查看 /etc/docker 下面是否存在 daemon.json 文件,这是一个 JSON 格式的文件。如果存在,则直接修改;如果不存在,则创建一个新的 daemon.json 文件。
(2)将下面内容写入到 daemon.json 文件:
{
"registry-mirrors": [ "https://docker.m.daocloud.io" ]
}修改后,使用“sudo systemctl restart docker”重启 Docker 服务。
点击学习开源企业 Docker 镜像仓库 Harbor 软件 教程。
也可以使用毫秒镜像:
感谢反馈!