如何在 Ubuntu 22.04 LTS 中安裝 Docker 和 Docker Compose
在這篇文章中,我們將會明白 Docker 是什麼,如何 在 Ubuntu 中安裝 Docker 引擎 。此外,我們也將會明白如何 安裝 Docker Compose ,它是一個定義並運行多容器的 Docker 應用。
我們已經在 Ubuntu 22.04 LTS 中正式的測試了這份指南。然而,它也應該對舊版本如 20.04 LTS 和 18.04 LTS 有效。為了更好的安全性和穩定性,我推薦你使用最新的版本 —— Ubuntu 22.04 LTS 。
什麼是 Docker ?
Docker 是一個快捷、輕便的系統級虛擬化技術,開發者和系統管理員可以使用它構建具備所有必要依賴項的應用程序,並將其作為一個包發布。
Docker 與其他如 VMWare 、Xen 、以及 VirtualBox 等工具的虛擬化方式不同,每個虛擬機不需要單獨的客戶操作系統。
所有的 Docker 容器有效地共享同一個主機系統內核。每個容器都在同一個操作系統中的隔離用戶空間中運行。
Docker 容器可以在任何 Linux 版本上運行。比如說你使用 Fedora ,我用 Ubuntu 。我們能相互開發、共享並分發 Docker 鏡像。
你無需擔心操作系統、軟體以及自定義設置,任何事都不用擔心。只要我們的主機安裝了 Docker ,就能持續開發。簡言之,Docker 能夠在任何地方運行!
前文中你讀到了兩個詞:Docker 鏡像 和 Docker 容器 ,或許你在想它們的區別。
通俗地說,Docker 鏡像是一個描述容器應該如何表現的文件,而 Docker 容器是 Docker 鏡像的運行(或停止)狀態。
希望你能夠理解 Docker 的基礎概念。更多細節,你可以參考文章末尾的 Docker 官方指導手冊。
Docker 依賴項
為了安裝並配置 Docker ,你的系統必須滿足下列最低要求:
- 64 位 Linux 或 Windows 系統
- 如果使用 Linux ,內核版本必須不低於 3.10
- 能夠使用
sudo
許可權的用戶 - 在你系統 BIOS 上啟用了 VT(虛擬化技術)支持 on your system BIOS(參考: 如何查看 CPU 支持 虛擬化技術(VT))
- 你的系統應該聯網
在 Linux ,在終端上運行以下命令驗證內核以及架構詳細信息:
$ uname -a
輸出樣例:
Linux Ubuntu22CT 5.15.35-3-pve #1 SMP PVE 5.15.35-6 (Fri, 17 Jun 2022 13:42:35 +0200) x86_64 x86_64 x86_64 GNU/Linux
正如上面你看到的那樣,我的 Ubuntu 系統內核版本是 5.15.35-3-pve 並且系統架構是 64 位(x86_64 x86_64 x86_64 GNU/Linux)。
注意: 這裡,我在 Proxmox 中使用 Ubuntu 22.04 容器。這是你看到上方內核版本中有 「pve」 字元的原因。如果你正在使用 Ubuntu 實體(或者虛擬)機,你將看到系統版本為 5.15.35-3-generic 。
內核版本需要不低於最低要求的版本,並且是 64 位機器。這樣不會有任何問題,我們能順利安裝並使用 Docker 。
請注意你使用哪一個 Ubuntu 系統不重要。並且你使用 Ubuntu 桌面或伺服器版本,亦或者其他 Ubuntu 變種如 Lubuntu 、Kubuntu 、Xubuntu ,都不重要。
只要你的系統內核版本不低於 3.10 ,並且是 64 位系統,Docker 都會正常運行。
在 Ubuntu 22.04 LTS 中安裝 Docker
首先,更新你的 Ubuntu 系統。
1、更新 Ubuntu
打開終端,依次運行下列命令:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt full-upgrade
2、添加 Docker 庫
首先,安裝必要的證書並允許 apt 包管理器使用以下命令通過 HTTPS 使用存儲庫:
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
然後,運行下列命令添加 Docker 的官方 GPG 密鑰:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 官方庫:
$ 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
使用命令更新 Ubuntu 源列表:
$ sudo apt update
3、安裝 Docker
最後,運行下列命令在 Ubuntu 22.04 LTS 伺服器中安裝最新 Docker CE:
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
當然你也可以安裝其他版本 Docker 。運行下列命令檢查可以安裝的 Docker 版本:
$ apt-cache madison docker-ce
輸出樣例:
docker-ce | 5:20.10.17~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.16~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.15~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.14~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.13~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
你可以挑選上面列表中的任何版本進行安裝。例如,安裝 5:20.10.16~ 3-0 ~ubuntu-jammy 這個版本,運行:
$ sudo apt install docker-ce=5:20.10.16~3-0~ubuntu-jammy docker-ce-cli=5:20.10.16~3-0~ubuntu-jammy containerd.io
安裝完成後,運行如下命令驗證 Docker 服務是否在運行:
$ systemctl status docker
你會看到類似下面的輸出:
* docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-06-27 13:07:43 UTC; 3min 4s ago
TriggeredBy: * docker.socket
Docs: https://docs.docker.com
Main PID: 2208 (dockerd)
Tasks: 8
Memory: 29.6M
CPU: 126ms
CGroup: /system.slice/docker.service
`-2208 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.071453522Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:>
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.071459974Z" level=info msg="ClientConn switching balancer to "pick_first"" >
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.130989294Z" level=info msg="Loading containers: start."
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.187439756Z" level=info msg="Default bridge (docker0) is assigned with an IP a>
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.235966874Z" level=info msg="Loading containers: done."
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.240149866Z" level=warning msg="Not using native diff for overlay2, this may c>
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.240281966Z" level=info msg="Docker daemon" commit=a89b842 graphdriver(s)=over>
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.240386856Z" level=info msg="Daemon has completed initialization"
Jun 27 13:07:43 Ubuntu22CT systemd[1]: Started Docker Application Container Engine.
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.276336600Z" level=info msg="API listen on /run/docker.sock"
好極了!Docker 服務已啟動並運行!
如果沒有運行,運行以下命令運行 Docker 服務:
$ sudo systemctl start docker
使 Docker 服務在每次重啟時自動啟動:
$ sudo systemctl enable docker
可以使用以下命令查看已安裝的 Docker 版本:
$ sudo docker version
輸出樣例:
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:02:46 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:00:51 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
4、測試 Docker
讓我們繼續,測試 Docker 是否運行正常:
運行:
$ sudo docker run hello-world
上述命令會下載一個 Docker 測試鏡像,並在容器內執行一個 「hello_world」 樣常式序。
如果你看到類似下方的輸出,那麼祝賀你!Docker 正常運行在你的 Ubuntu 系統中了。
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:13e367d31ae85359f42d637adf6da428f76d75dc9afeb3c21faea0d976f5c651
Status: Downloaded newer image for hello-world:latest
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.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
很好!可以使用 Docker 了。
5、作為非 root 用戶運行 Docker (選做)
默認情況下,Docker 守護進程綁定到 Unix 套接字而不是 TCP 埠。由於 Unix 套接字由 root 用戶擁有,Docker 守護程序將僅以 root 用戶身份運行。因此,普通用戶無法執行大多數 Docker 命令。
如果你想要在 Linux 中作為非 root 用戶運行 Docker ,參考下方鏈接:
我個人不這樣做也不推薦你這麼做。如果你不會在互聯網上暴露你的系統,那沒問題。然而,不要在生產系統中以非 root 用戶身份運行 Docker 。
在 Ubuntu 中安裝 Docker Compose
Docker Compose 是一個可用於定義和運行多容器 Docker 應用程序的工具。使用 Compose,你可以使用 Compose 文件來配置應用程序的服務。然後,使用單個命令,你可以從配置中創建和啟動所有服務。
下列任何方式都可以安裝 Docker Compose 。
方式 1、使用二進位文件安裝 Docker Compose
從 這裡 下載最新 Docker Compose 。
當我在寫這篇文章時,最新版本是 2.6.1 。
運行下列命令安裝最新穩定的 Docker Compose 文件:
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
如果有更新版本,只需要將上述命令中的 v2.6.1 替換為最新的版本號即可。請不要忘記數字前的 "v" 。
最後,使用下列命令賦予二進位文件可執行許可權:
$ sudo chmod +x /usr/local/bin/docker-compose
運行下列命令檢查安裝的 Docker Compose 版本:
$ docker-compose version
Docker Compose version v2.6.1
方式 2、使用 Pip 安裝 Docker Compose
或許,我們可以使用 Pip 安裝 Docker Compose 。Pip 是 Python 包管理器,用來安裝使用 Python 編寫的應用程序。
參考下列鏈接安裝 Pip 。
安裝 Pip 後,運行以下命令安裝 Docker Compose。下列命令對於所有 Linux 發行版都是相同的!
$ pip install docker-compose
安裝 Docker Compose 後,使用下列命令檢查版本:
$ docker-compose --version
你將會看到類似下方的輸出:
docker-compose version 2.6.1, build 8a1c60f6
恭喜你!我們已經成功安裝了 Docker 社區版和 Docker Compose 。
安裝了 Docker,然後呢?查看本系列的下一篇文章,了解 Docker 基礎知識。
要在基於 RPM 的系統(例如 RHEL、Fedora、CentOS、AlmaLinux、Rocky Linux 和 openSUSE)中安裝 Docker,請參考以下鏈接。
總結
在這篇教程中,我們討論了 Docker 是什麼,如何在 Ubuntu 22.04 LTS Jammy Jellyfish 中安裝 Docker 。然後學習了如何通過運行 hello-world Docker 鏡像測試 Docker 是否成功安裝。最後,我們通過使用兩種不同的方式安裝 Docker Compose 作為本教程的結尾。
資料
via: https://ostechnix.com/install-docker-ubuntu/
作者:sk 選題:lkxed 譯者:Donkey 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive