点击学习开源企业 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 软件 教程。