[TOC]
# Ubuntu 安装Docker步骤
## 1. 进入Docker官网,进入开发者页面
- 官网地址:[https://docker.com/](https://docker.com/)

- 进入开发者

- 选择引擎安装

- 在里面可以看到很多的版本,这里我们只以Ubuntu为例进行安装,中途会遇到很多报错问题,也会一起解决。

## 2. 选择适合自己的安装方式
<span style="color: red;">判断自己的版本是不是可以安装</span>

> 上面的大体意思是,这些版本的 Ubuntu 支持 Docker Engine 的安装和运行。确保您使用的系统是 64 位版本,才能顺利安装 Docker。
## 3. 安装 Docker
Ubuntu 的 Docker 安装分为3步:
### 1.更新系统包,安装插件,创建秘钥及目录
```sh
更新系统包索引,以便获取最新的软件包列表;
安装 ca-certificates 和 curl;
创建一个名为 /etc/apt/keyrings 的目录,并设置该目录的权限为 0755(即所有者可读、写、执行,组和其他用户可读、执行);
使用 curl 从 Docker 官方站点下载 GPG 密钥,并将其保存到 /etc/apt/keyrings/docker.asc 路径下;
为 /etc/apt/keyrings/docker.asc 文件设置权限,允许所有用户读取该文件(a+r 表示所有用户读取权限),这是为了让 apt 能够读取并验证 Docker GPG 密钥.
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
```
```sh
添加 Docker 仓库到 apt 源
更新 apt 包索引
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
使用阿里云库安装(推荐):
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```
### 2.安装 Docker 软件包
```sh
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
**这里可能会安装不上,主要是因为apt地址不稳定,解决的办法是:”切换成阿里云地址,然后多尝试安装。还是不行就先看一下异常2,配置 Docker 使用的镜像源,再尝试。“**
测试 Docker 是否安装成功
```sh
docker -v
```
如果打印出 Docker 的版本参数,表示你的Docker已经运行成功了,恭喜喔;
<span style="color:red">如果没有Docker命令,那就是安装失败,可以参考页尾的“异常处理2”重新安装。</span>
### 3.设置开机启动
```sh
sudo systemctl start docker
```
查看开机启动是否设置成功
```
systemctl status docker
```

`Active: active (running)` 表示 Docker 服务正在运行。
`Loaded: loaded (/lib/systemd/system/docker.service; enabled)` 表示 Docker 服务已经配置为开机启动(`enabled`)。
### 4.通过运行 hello-world 镜像验证安装是否成功
```sh
sudo docker run hello-world
```
<span style="color:red">安装不成功换一下自己的Docker库地址(多试几次,有50秒的启动时间),如下:</span>
```
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["自己的镜像服务地址"],
"max-concurrent-downloads": 5,
"log-level": "debug"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
```
如图为成功:

到此安装结束。
## 常见异常处理
### 1. 执行`hello-world`文件的时候报错,主要是权限问题
如:出现 `permission denied while trying to connect to the Docker daemon socket` 错误通常是因为当前用户没有足够的权限访问 Docker 守护进程。
解决办法:
```
sudo usermod -aG docker $USER
sudo shutdown -r now
```
* `-aG`:将用户追加到指定的组中。
* `$USER`:这是当前的用户名。
* `shutdown -r now` 重启服务器
### 2. 由于国内要求,Docker服务已经禁止,需呀配置加速(这里由于发布要求已经封禁,需要的了解的可以联系我)
<span style="color:red">镜像地址进入自己的”render“查看,地址:https://dashboard.render.com </span>
```
创建 Docker 配置目录
创建并编辑 Docker 配置文件
重新加载 systemd 配置
重启 Docker 服务
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["自己的镜像服务器地址"],
"max-concurrent-downloads": 5,
"log-level": "debug"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
```
再次测试“hello-world”
```
sudo docker run hello-world
```
测试拉取操作
```
docker pull xxxxx.xxxx.xxxx/okteto/docker-proxy:latest
```
基本解决以上问题就可以实现安装,还有问题请与作者联系。
### 3. 将 Docker 的安装源更换为阿里云的 Docker 镜像源,替换官方的镜像源。
补充:查看Docker 的 APT 源(Docker 的安装源)
<span style="color:red">注意:**APT 源** 和 **Docker 的安装源** 是两个不同的概念,但它们之间有一定的关系。
APT(**Advanced Package Tool**)源是一个软件仓库,它用于存储 Debian 和 Ubuntu 系统中的软件包(.deb 文件)。APT 是一个包管理工具,它通过从这些源获取和安装软件包来管理系统中的软件。
**Docker 的安装源**是指提供 Docker 安装和更新的仓库,它也是通过 APT 管理的,但是它是一个专门用于安装 Docker 相关软件包的源。你可以将 Docker 的安装源视为一个 **专用的 APT 仓库**,它提供的就是 Docker 相关的包(例如 `docker-ce`、`docker-ce-cli`、`containerd` 等)。
</span>
```
cat /etc/apt/sources.list.d/docker.list
```
(1)如果你已经按照官方源配置了 Docker 的安装源,可以先删除旧的源配置,防止冲突:
```
sudo rm /etc/apt/sources.list.d/docker.list
```
(2)将阿里云的 Docker 镜像源添加到系统的 APT 源中
```
echo \
"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
(3)为了确保 APT 源的安全性,你需要导入阿里云的 GPG 密钥
```
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
```
设置文件权限:
```
sudo chmod a+r /etc/apt/keyrings/docker.asc
```
(4)更新软件包列表
```
sudo apt-get update
```

(5)查看 Docker 的源配置文件 `/etc/apt/sources.list.d/docker.list` 是否已经正确指向阿里云的镜像源
```
cat /etc/apt/sources.list.d/docker.list
```

(6)验证 GPG 密钥是否导入成功
```
sudo apt-key list
```
这里只有Ubuntu密钥,没有阿里云的,重装密钥试过还是一样,但系统正常,所以就暂时不管了
