私有化輕量級持續集成部署方案--01-環境配置(上)


提示:本系列筆記全部存在於 Github, 可以直接在 Github 查看全部筆記

Docker

Docker 概述

Docker 是一種容器化技術,用於隔離應用之間的邊界問題。
Docker 最常見的兩個概念是:鏡像(Image)容器(Container)

鏡像(Image)

鏡像(Image)是當前程序運行時所使用的所有文件資源。可以簡單理解為鏡像(Image)中包含程序運行所需要的所有文件資源(包括系統程序的文件資源)。

例如一個前端應用鏡像,需要依賴 Nginx 服務器, Nginx 依賴系統。

所以一個前端應用程序鏡像包含了操作系統文件資源、Nginx 文件資源。

所以鏡像可以隨意進行 “搬運” ,而不受宿主環境(本地系統)影響。

鏡像(Image) 設計方案是分層設計的,社區內提供大量的基礎鏡像,可以利用這些基礎鏡像來構建鏡像。

例如前端應用鏡像,直接使用 Nginx 鏡像構建鏡像,就相當於在 Nginx 鏡像層中又加了一層。 而 Nginx 鏡像也是在 系統鏡像層 上加的一層。

分層帶來了諸多好處。

PS: Docker 並不是完全不受系統環境的影響,Docker 容器是運行在宿主環境上,在軟件層面上進行的隔離,而並非虛擬機那種直接在硬件上進行隔離

PS:鏡像(Image) 的層級划分實際上更為精細。在 Dockerfile 文件中, 一個語句就是一層。

容器(Container)

容器(Container)是根據鏡像(Image)在系統中創建的一個進程,只不過對這個進程做了某些特殊處理。例如: 隔離限制(Namespace)資源限制(Control Group)

簡單的可以理解為 容器(Container)就是一個受限制的進程。

Docker容器化里面有很多東西,有興趣可以自行學習

Docker 部署

HTTPS 工具

Docker 安裝需要 HTTPS 協議安裝,一般第一步都是安裝 apt-transport-https

sudo apt install apt-transport-https ca-certificates curl software-properties-common

騰訊雲服務器中已經具有了 HTTPS 協議的包,所以直接省略此步驟,沒有的話使用上面語句進行安裝

添加 Docker 存儲庫密鑰

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加 Docker 存儲庫 apt

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

  • [arch=amd64] 表示 amd64 架構,其它還具有armhfarm64 等架構
  • $(lsb_release -cs) stable 表示穩定版。還有 edge(體驗)test(測試)

apt 源添加成功后可以在 /etc/apt/sources.list 文件查看

然后更新 apt 配置文件

sudo apt update

安裝 Docker CE

Docker 版本分為 Docker EE(企業版)Docker CE(社區版)
Docker EE 提供了一些收費的高級特性。

可以使用 apt 查看當前可用的Docker CE版本

apt list -a docker-ce

在寫這篇文章時的最新的版本時 Docker-CE 20.10.12,在此就安裝Docker-CE 20.10.12

sudo apt install docker-ce=5:20.10.123-0ubuntu-focal

安裝成功后可以取消 Docker 的自動更新,防止版本更新導致錯誤。

sudo apt-mark hold docker-ce

Docker 啟動與設置

啟動 Docker 服務

service docker start

啟動成功后可以執行 Docker 命令

添加用戶到 Docker

在非 root 用戶執行 Docker 命令必須使用 sudo,這是一個繁瑣的過程,可以將指定用戶添加至 Docker 組解決這個問題

添加用戶至 Docker

sudo usermod -aG docker [USER]

添加完畢后需要重新登陸才生效

設置 Docker 鏡像源

Docker 默認鏡像源地址是在國外,鏡像拉取會很慢,可以將鏡像源改為國內鏡像源

修改 Docker 默認源是修改 /etc/docker/daemon.json(沒有此文件,可以自行創建)

在此文件中添加國內鏡像,可以添加一個或多個。

在此添加了 網易鏡像源中國科技大學鏡像源Docker 官方中國區鏡像源

{
	"registry-mirrors": [
		"https://hub-mirror.c.163.com",
		"https://docker.mirrors.ustc.edu.cn",
		"https://registry.docker-cn.com"
	]
}

添加完畢后需要重啟 Docker 服務

sudo systemctl daemon-reload

sudo systemctl restart docker

重啟成功后可以使用 docker info 命令查看修改的結果

其中 Registry Mirrors 就是鏡像源屬性。

Docker Compose

Docker Compose 概述

Docker Compose 是一個 Docker 編排工具(容器組管理)。可以對多個 容器 合並到一個組進行管理。

在現實場景中,一個項目往往具有多個應用,一個項目可能會具有多個容器組成,也就是形成一個容器組。Docker Compose 就是提供這個組的管理工具。

PS: 容器是一個原子單位,雖然可以直接將多個應用(多個進程)打包在一個容器內,但是不推薦這樣做,容器應保持單進程執行

Docker Compose 使用了 YAML標記語言作為配置文件,所以使用 Docker Compose 管理容器還有一個好處是使用文件形式組織容器配置,而不是單純的命令行

容器編排工具還有其它工具,比如鼎鼎大名的 kubernetes(k8s),還有 Docker SWARMK3s等。

企業級別的一般都是用 kubernetes(k8s),不過個人且還是小 4G 服務器還是算了。

一開始我想選擇 K3s,但是那玩意部署也有些麻煩,占用資源也不少,且想了想還是單機也沒必要使用集群方案,最后就直接選擇了 Docker Compose

Docker Compose 部署

Docker Compose 安裝包可以直接從 github 下載,目前最新版本是 v2.2.3

可以直接在服務器中使用 curl 下載

sudo curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

但是國內訪問 github 真的是超級慢,所以建議直接在本地下載(使用加速器),然后上傳服務器

下載時注意系統版本,一般情況下都是 Linux x86_64,如果不放心可以使用 uname -sm 命令查看

本地下載完成之后,將文件更名為 docker-compose 並上傳到服務器 /usr/local/bin/ 目錄下就相當於安裝成功了。

PS: 注意上傳時登錄的用戶,一般用戶沒有權限上傳此目錄,我所有上傳操作都是使用的 root 用戶。

安裝完成后,一般用戶也並沒有執行 Docker Compose 的權限 , 需要設置 Docker Compose 的讀寫權限。

sudo chmod +x /usr/local/bin/docker-compose

在此直接將 Docker Compose 的執行權限設置給了所有用戶,如果需要詳細設置,使用 chmod 命令具體參數設置

設置完成后就可以執行 docker-compose 命令了

Docker Compose 命令

docker-compose 命令可以查看網上資料,具體命令我也不熟,都是使用網上現查, 一般也是使用另一個管理工具 Portainer 來執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM