vault backup: 2026-11-07 16:33:44

This commit is contained in:
cheney
2026-11-07 16:33:55 +08:00
commit 7015312702
1208 changed files with 132432 additions and 0 deletions
+156
View File
@@ -0,0 +1,156 @@
### 准备在Ubuntu上安装Docker
你可以在Ubuntu 18.04、20.04、21.10和22.04版本上安装最新的Docker版本。支持x64_64/AMD64、ARMhf、ARM64和S390x架构。
有几种方法可以安装Docker,你的选择将取决于你需要的功能和你喜欢的软件包管理方法。你将在本指南中了解所有可能的选项。
#### 选择一个Docker Flavor
Linux上的Docker传统上是只用终端的。一个正常的安装包括Docker引擎,一个运行容器的守护程序,以及与守护程序互动的 `docker` 命令行界面(CLI)。
[Docker桌面](https://www.wbolt.com/go?_=df5dc7c8d0aHR0cHM6Ly93d3cuZG9ja2VyLmNvbS9wcm9kdWN0cy9kb2NrZXItZGVza3RvcA%3D%3D)是使用Docker的另一种方式。历史上只在Windows和Mac上可用,它在2022年5月推出了Linux版。Ubuntu上的Docker Desktop需要一个AMD64处理器和Ubuntu 21.10或22.04。它提供了一个管理容器的图形界面,一个集成的Kubernetes集群,以及对第三方扩展的支持。Docker Desktop还为你提供了 `docker` 和Docker Compose CLI。
Docker Desktop与Docker Engine不同,它使用虚拟机来运行你的容器(这就是为什么Windows和MacOS用户需要Docker Desktop)。尽管在Ubuntu上可以并排使用这两个版本,但你可能会发现 `docker` CLI版本之间的冲突。最好是选择一个并坚持使用。如果你对你的终端很满意,并且希望得到最好的支持和性能,那么就选择Docker Engine。Docker Desktop的虚拟机使其略显沉重,但如果你想要一个集成的用户界面或计划使用Kubernetes,则是更好的选择。
### 在Ubuntu上安装Docker引擎
Docker Engine是在Ubuntu上运行Docker的标准方式。它适用于所有支持的版本和环境,从本地的Ubuntu桌面机到你的Ubuntu服务器云主机。在你继续之前,请确保你运行的Ubuntu版本是18.04或更新的。
Docker引擎有3种不同的安装方法:
1. 一个官方的Ubuntu `apt` 资源库
2. 一个独立的Debian软件包(`.deb`)
3. 一个自动安装脚本
选项1,即Ubuntu `apt` 软件库,是最常用的。它将Docker添加到你的软件包列表中,这样你就可以通过运行 `apt upgrade` 轻松安装未来的更新。选项2,不支持自动更新,但非常适合在有空气过滤的离线系统上安装Docker。自动安装脚本是最简单的入门方法,但[其配置只适合开发使用](https://www.wbolt.com/go?_=1dc9a57d32aHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2luc3RhbGwvdWJ1bnR1LyNpbnN0YWxsLXVzaW5nLXRoZS1jb252ZW5pZW5jZS1zY3JpcHQ%3D)。Docker建议不要在生产环境中使用它。
当你与生产系统一起工作,想要轻松更新,或需要在所有环境中使用相同的机制时,使用 `apt` 仓库。
如果你想在自己的机器上试验Docker时获得快速的安装体验,请使用自动安装脚本。
#### 1. 使用apt仓库安装Docker
Docker publishes packages to its own `apt` repository. You’ll need to add this repository to your `apt` sources list, otherwise, your `apt` installation won’t be able to find the Docker packages.
Docker将软件包发布到自己的 `apt` 仓库。你需要将这个仓库添加到你的 `apt` 源列表中,否则,你的 `apt` 安装将无法找到Docker包。
首先,更新你现有的软件包列表,并为下面的步骤安装一些依赖项。 `ca-certificates`, `curl`, `gnupg` 和 `lsb_release` 工具将被用来下载正确的Docker `apt` 仓库细节和你系统的签名密钥。尽管你可能已经有了这些软件包,但确保它们是可用的也无妨。
$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release
接下来,在apt上注册Docker的GPG密钥圈。这将让 `apt` 验证你安装的Docker包。
$ sudo mkdir -p /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
`curl` 命令为Ubuntu下载Docker的GPG密钥,将其转换为标准的OpenGPG编码,并将其保存到apt的keyring目录中。 `chmod` 用来设置keyring文件的权限,以便 `apt` 能够可靠地检测到它。
现在你可以把Docker包的源代码添加到你的系统中。运行下面的命令:
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
这使用shell替换来自动检测你的系统架构,如AMD64或ARM64,并下载相应的软件包列表。它将使用之前添加的GPG密钥进行验证。该软件库被作为一个新的软件包列表添加到 `apt /etc/apt/sources.list.d directory.`中。
再次更新你的软件包列表,让 `apt` 知道Docker软件包的存在:
$ sudo apt update
现在你可以使用 `apt install` 命令将Docker的组件添加到你的系统中。你将会安装最新版本的Docker社区版(CE)。有三个软件包需要安装:
- `docker-ce`: Docker引擎守护程序。
- `docker-ce-cli`: 你将与之互动的Docker CLI。
- `containerd.io`: 被[称为containerd](https://www.wbolt.com/go?_=11e6738913aHR0cHM6Ly9jb250YWluZXJkLmlvLw%3D%3D)的容器运行时间,用于启动和运行你的容器。
$ sudo apt install docker-ce docker-ce-cli containerd.io
#### 2. 使用Debian Packagers安装Docker
官方的 `.deb` 包设置起来很简单,但你必须手动下载和安装每个新版本。软件包被托管在一个[简单的文件服务器](https://www.wbolt.com/go?_=f703ea2518aHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL2xpbnV4L3VidW50dS9kaXN0cw%3D%3D)上。首先浏览Docker的[发布说明页面](https://www.wbolt.com/go?_=42b1de2189aHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlbGVhc2Utbm90ZXM%3D),找到最新的可用版本号,比如20.10.20。接下来,[前往containerd的GitHub页面](https://www.wbolt.com/go?_=ef964bbef7aHR0cHM6Ly9naXRodWIuY29tL2NvbnRhaW5lcmQvY29udGFpbmVyZC9yZWxlYXNlcw%3D%3D),也可以查看其版本号。它将看起来像1.6.8。
现在你可以运行下面的命令序列,为你的平台下载正确的软件包。将`<DOCKER_VERSION>` 和 `<CONTAINERD_VERSION>` 分别替换为当前Docker和containerd的版本号。
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-ce_<DOCKER_VERSION>~3-0~ubuntu-focal_amd64.deb -o docker-ce.deb
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-ce-cli_<DOCKER_VERSION>~3-0~ubuntu-focal_amd64.deb -o docker-ce-cli.deb
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/containerd.io_<CONTAINERD_VERISON>-1_amd64.deb -o containerd.deb
你也可以通过在浏览器中访问你的Ubuntu版本的[目录列表](https://www.wbolt.com/go?_=f703ea2518aHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL2xpbnV4L3VidW50dS9kaXN0cw%3D%3D)来下载文件并检查所有可用的版本。
一旦你下载了Docker CE、CLI和containerd软件包,使用以下命令来安装它们:
$ sudo apt install ./docker-ce.deb ./docker-ce-cli.deb ./containerd.deb
如果你没有使用上面提供的脚本而手动下载软件包,请调整文件名。
#### 3. 使用安装脚本安装Docker
Docker的[便利脚本](https://www.wbolt.com/go?_=1dc9a57d32aHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2luc3RhbGwvdWJ1bnR1LyNpbnN0YWxsLXVzaW5nLXRoZS1jb252ZW5pZW5jZS1zY3JpcHQ%3D)可以自动安装所有Docker组件。它是非交互式的,所以你可以坐下来等待,而你的系统已经为你准备好了。
首先下载该脚本:
$ curl -fsSL https://get.docker.com -o get-docker.sh
现在以root权限运行该脚本:
$ sudo sh get-docker.sh
Executing docker install script
...
等到脚本达到完成。你应该看到一条确认信息,显示Docker已经安装。
这个脚本是为了提供一个通用的解决方案。如果不直接修改脚本的源代码,你就无法定制它的功能。它也不是为执行Docker更新而设计的,因为它不会将依赖关系更新到最新版本。
#### 确保Docker引擎在Ubuntu上运行
无论你使用哪种安装方法,你都应该通过启动一个容器来确保一切正常:
$ sudo docker run hello-world
你会看到Docker客户端将 `hello-world:image` 从Docker Hub仓库拉到你的机器上:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625
Status: Downloaded newer image for hello-world:latest
然后,一个新的容器将自动启动。hello-world “的启动镜像被配置为运行一个简单的命令,输出一些关于Docker的基本信息,然后立即退出:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
看到上面显示的输出意味着Docker已经可以使用了。守护进程成功地从Docker Hub拉出了[hello-world:latest image](https://www.wbolt.com/go?_=2712683cf7aHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9fL2hlbGxvLXdvcmxk),并使用它启动了一个容器。从 “Hello from Docker “一行开始的所有内容都是由容器内的进程发出的。