新手自建 Docker 伺服器 - (1) Ubuntu 主機建立 docker 服務

在 Ubuntu 主機上建立 docker 服務

這一系列文章,是我自己完成 Docker Server 建立的經歷以及過程,包含以下章節內容:

  1. 新手自建 Docker 伺服器 - (0) 簡介與架構說明
  2. 新手自建 Docker 伺服器 - (1) Ubuntu 主機建立 docker 服務
  3. 新手自建 Docker 伺服器 - (2) 建立 Nginx 代理伺服器
  4. 新手自建 Docker 伺服器 - (3) 建立應用,以靜態網頁為例
  5. 新手自建 Docker 伺服器 - (4) 建立 Joplin 筆記軟體
  6. 新手自建 Docker 伺服器 - (5) 建立自己的音樂串流服務 Navidrome

自建 Docker 伺服器 - (1) Ubuntu 主機建立 docker 服務

這篇文章的重點很簡單,就是如何在 Ubuntu 主機上建立 docker 服務,如此一來,之後所有的服務內容都可以透過 docker 實踐,不會讓彼此環境或參數互相影響。

那在這之前,我再來放一次整個系統架構圖,順便說一下這張圖我是用 Plantuml 畫出來的:

  
@startuml
left to right direction
skinparam actorStyle awesome
rectangle "Ubuntu" as ub {
  package Docker {
    usecase "Nginx" as ng
    note top of ng
      listen XXX
      Reverse to XXX.domain docker
    end note
    usecase "DockerA" as dka
    usecase "DockerB" as dkb
  }
}
note left of ub
  Create on Linode
  IP: 1.1.1.1
end note
"User" as u
u --> (Cloudflare) : XXX.domain
note top of (Cloudflare)
  A Record: XXX.domain -> 1.1.1.1
end note
(Cloudflare) --> ng
ng --> dka : AAA.domain
ng --> dkb : BBB.domain
@enduml

  

步驟一:購買(組用)Ubuntu 主機

我是在 Linode 上買這台主機的,那如果你熟悉 AWS 或 GCP,直接在上面買也是一樣的,不過就要注意它是有對外 IP 可以設定。

在拿到機器之後,可以先 SSH 連線進去,開始做系統的初步整理

sudo apt update && sudo apt upgrade

步驟二:安裝 Docker

接下來這邊步驟比較多,我就用一個 bash 裡面的註解說明步驟原因

#安裝後續必要的套件功能
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
#下載docker對於官方 GPG 金鑰,並且加入到你的主機系統
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#下載對應ubuntu版本的 docker
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
#安裝docker comunity 版本以及 docker compose
sudo apt-get install -y docker-ce docker-compose
#把當前使用者加入到 docker 群組,後續執行 docker 都不用 sudo
sudo gpasswd -a ${USER} docker
#重新載入使用者群組
bash

步驟三:檢查 Docker 版本

在 Terminal 輸入 docker version 來確認版本是否安裝成功

docker version

完成啦!

如果對於主機操作以及 command 指令有操作經驗,這篇關於 docker 的安裝應該問題不大,也可以不用按照這篇的實作,透過自己熟悉以及擅長的方式安裝即可。

接下來我們就完成了整個系統最外層的架構,接下來就的幾篇文章都是在 Docker 內進行。

comments powered by Disqus