[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密鑰,沒有阿里云的,重裝密鑰試過還是一樣,但系統正常,所以就暫時不管了
