Linux系统Ubuntu配置Docker详细流程

本文介绍在Linux 操作系统Ubuntu18.04及以上版本中,配置开源容器化平台和工具集Docker 的详细方法;其中,我们以配置Docker 平台的核心组件之一------Docker Engine为例来详细介绍。

首先,大家需要明确,我们常说的Docker ,其实就是指的Docker DesktopDocker Engine 这两个东西。其中,Docker Desktop 软件是适合于桌面操作系统的、完整的Docker ,而Docker Engine 则是Docker 的核心运行引擎;Docker Desktop 软件包含了Docker Engine 和其他一些附加的功能。关于下载Docker Desktop 还是Docker Engine ,简单来说,就是如果在桌面操作系统(比如Windows 电脑、Mac 电脑中),就下载Docker Desktop 软件,因为其可以通过图形化的界面来实现多种Docker 功能;若是在服务器、Linux 电脑等平台,则下载Docker Engine 即可,因为其可以通过命令行来完成各项Docker 功能。关于二者的更详细介绍与区分,大家可以参考Docker 官网给出的阐述,这里就不再赘述。

话不多说,我们开始Docker Engine的具体配置。其中,本文所涉及的全部代码,都在终端中执行即可。

1 预处理

首先,我们需要确保电脑中没有老版本的Docker 及其组件。例如,我这里的电脑虽然没有Docker 应用,但是还是能搜索到一些关于docker的文件或文件夹;如下图所示。

因此,除非大家的电脑是刚刚买回来、什么都没有配置过的新电脑,其他情况下都建议大家首先执行如下的代码。

bash 复制代码
sudo apt-get remove docker docker-engine docker.io containerd runc

上述代码使用apt-get命令来移除Docker 相关软件包和容器运行时的命令。其中,sudo是一个用于以超级用户(root )权限运行命令的关键词;通过使用sudo,可以执行需要管理员权限的操作。随后的apt-get是用于在DebianUbuntu 等基于DebianLinux 发行版中进行软件包管理的命令行工具。removeapt-get命令的一个选项,用于从系统中卸载指定的软件包。dockerdocker-enginedocker.iocontainerdrunc都是要卸载的软件包的名称,指定了Docker 及其相关组件的软件包名称。通过在命令中列出这些软件包的名称,apt-get将卸载它们及其相关的文件和配置。

运行上述代码,如下图所示。可以看到,我的电脑中其实之前也并没有什么Docker的相关文件。

此外,我们还可以用Docker官网提供的一句代码来实现上述类似的功能;它的作用和前述代码一致。

bash 复制代码
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc;
do sudo apt-get remove $pkg;
done

运行上述代码,如下图所示。

接下来,我们需要更新一下系统的软件包列表;通过如下的代码即可实现这一需求。

bash 复制代码
sudo apt-get update

运行上述代码,系统会连接到软件包仓库服务器,并检查是否有可用的更新版本和新的软件包。这个命令会更新本地系统中的软件包列表,以反映最新的可用软件包信息。

在运行其他apt-get命令(如安装软件包、升级系统等)之前,通常建议先运行上述代码,确保系统获得最新的软件包列表。这样可以确保我们从最新的软件包仓库中获取软件包,并减少因为旧版本软件包而可能导致的问题。

需要注意,apt-get update只会更新软件包列表,而不会实际下载或安装软件包。如果后面我们要安装或升级软件包,需要进一步使用apt-get installapt-get upgrade才可以。

运行上述代码,如下图所示。其中紫色框内是我们输入电脑账户密码的地方。

运行上述代码,有的时候会有一些报错,如下图所示。但一般情况下,这些报错都不会影响我们后续的正常操作。

2 存储库配置

接下来,我们需要通过如下的代码,使得apt可以通过HTTPS 来使用仓库(这个是Docker必要的条件)。

bash 复制代码
sudo apt-get install ca-certificates curl gnupg

其中,ca-certificates是一个软件包名称,它包含了一组根证书和中间证书,用于验证HTTPS 连接的安全性;安装ca-certificates软件包可以确保系统具有最新的根证书列表。curl是一个用于在命令行中进行网络请求的工具,它支持多种协议,如HTTPHTTPSFTP 等;安装curl软件包可以让我们在终端中方便地进行网络请求和下载文件。gnupgGNU 隐私卫士(GNU Privacy Guard)的缩写,也称为GPG ;它是一个用于加密和签名数据的工具集,安装gnupg软件包可以在系统中使用GPG密钥和加密功能。

运行上述代码,如下图所示。

接下来,我们通过如下代码,设置Docker 软件源的GPG 密钥;这个GPG是一个用于加密和签名数据的工具。

bash 复制代码
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

首先,-m 0755是设置文件或目录的权限的选项,0755表示所有者具有读、写和执行权限,而其他用户具有读和执行权限。随后的-d /etc/apt/keyrings指定要创建的目录路径,其创建一个名为/etc/apt/keyrings的目录。该命令的目的是创建/etc/apt/keyrings目录,该目录将用于存放密钥文件。

接下来,-fsSLcurl命令的选项,用于指定请求的方式和参数;其中,-fsSL意味着以静默模式发送请求(不显示进度信息),并跟随重定向。其后的链接,则是要获取的GPG 密钥的URL 。再随后的|是管道符号,用于将前一个命令的输出作为后一个命令的输入。--dearmor用于将二进制格式的GPG 密钥转换为文本格式,并随后指定将转换后的GPG 密钥保存到/etc/apt/keyrings/docker.gpg文件中。该命令的目的是使用curl从指定的URL 下载Docker 软件源的GPG密钥,并将其转换为文本格式后保存。

其次,chmod是一个用于修改文件或目录权限的命令,a+r表示将读权限授予所有用户,最后的路径则是要修改权限的文件路径。该命令的目的是将GPG密钥文件的读权限授予所有用户,以确保所有用户都能够读取该文件中的密钥信息。

运行上述代码,如下图所示。

接下来,我们需要配置Docker存储库,代码如下。

bash 复制代码
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

首先,echo是一个用于在终端输出文本的命令,引号内的内容则是要输出的文本。这里的[arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg]是一个APT 源的配置选项,用于指定软件体系结构和GPG 密钥的位置;其中的$(dpkg --print-architecture)是一个子命令,用于获取当前系统的体系结构。随后的链接,则是Docker 软件源的URL

接下来,$(. /etc/os-release && echo "$VERSION_CODENAME")是一个子命令,用于获取当前系统的Ubuntu 版本代号(codename),其后的/etc/os-release文件包含有关操作系统的信息。stable表示要使用Docker软件源的稳定版本。

随后,tee是一个用于从标准输入读取数据并将其写入文件的命令。/etc/apt/sources.list.d/docker.list是要写入数据的文件路径。> /dev/null是将命令的输出重定向到空设备(null设备),即丢弃输出。该命令的目的是使用sudo权限将Docker 软件源的配置信息写入到/etc/apt/sources.list.d/docker.list文件中,并将输出重定向到空设备,以避免输出到终端。

运行上述代码,如下图所示。

接下来,不知为何,按照官网的流程,我们还需要再更新一下系统的软件包列表;我们就按照官网的说法照做即可。

bash 复制代码
sudo apt-get update

运行上述代码,如下图所示。

3 Docker Engine配置

接下来,我们就可以开始配置Docker Engine 自身了。配置Docker Engine的流程还是很简单的,直接执行如下的代码即可。

bash 复制代码
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

其中,docker-ceDocker 社区版,是Docker 的核心组件;docker-ce-cli表示Docker CLI (命令行界面),用于与Docker 进行交互和管理容器。containerd用于管理容器的生命周期。docker-buildx-pluginDocker Buildx 插件,用于构建多平台的Docker 镜像;同样的,docker-compose-plugin也是Docker Compose插件,用于定义和管理多容器应用的编排和部署。

运行上述代码,如下图所示。

4 Docker Engine配置验证

随后,我们验证一下Docker Engine的配置成功与否。通过如下的代码即可加以验证。该命令会下载一个测试映像并在容器中运行它。

bash 复制代码
sudo docker run hello-world

运行上述代码,如下图所示。

出现如上图所示的字样,就说明我们的Docker Engine配置已经成功了。

需要说明的是,我们这篇文章只介绍了Docker Engine 的下载、配置方法;关于以非root 用户管理Docker 的方法,大家可以参考文章Linux系统Ubuntu以非root用户身份操作Docker的方法https://blog.csdn.net/zhebushibiaoshifu/article/details/132637472);关于**Docker Engine**具体的使用方法,我们将在后续的博客中加以详细的介绍。

至此,大功告成。

欢迎关注:疯狂学习GIS

相关推荐
上天_去_做颗惺星 EVE_BLUE33 分钟前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
Yana.nice1 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月1 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊2 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey2 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1152 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
好好沉淀2 小时前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng2 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.2 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon3 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发