在 WSL 環境中構建:WSL2 (2.3.26.0) + Oracle Linux 8.7 官方鏡像
基本概念說明
容器技術
利用 Linux 系統的 文件系統(UnionFS)、命名空間(namespace)、權限管理(cgroup),虛擬出一個獨立于主系統的文件系統(文件、網絡、權限與主機相互獨立),由于 Linux 系統一切均基于文件,因此這樣就可實現多個虛擬環境在同一主機上的運行
- 容器技術 VS 虛擬機 VS 實機運行
- 實機運行 = 軟件直接在硬件上運行
直接運行在硬件上效率高,但靈活度太低、硬件成本高 - 虛擬機 = 利用計算機硬件的功能,虛擬化一個完整的系統
安全,虛擬系統支持的種類多,但虛擬系統負責運行效率低 - 容器技術 = 共用系統底層,利用系統實現不同容器、容器與主機間的隔離
運行效率高、靈活性高
- 實機運行 = 軟件直接在硬件上運行
- 重要概念
- 容器 Container:每個獨立劃分的空間,里邊包含了獨立的文件系統,稱為容器,鏡像在其中運行
- 源 Registry:管理鏡像的倉庫
- 鏡像 Image:可以將現有的容器打包 / 使用構建工具創建鏡像,便于分發部署
- 容器技術的未來
- 容器進一步發展,從單一服務器擴展到整個集群、多個集群都使用容器構建系統,此時 docker 就力不從心了,需要更高級的專門系統,進行集群級的容器管理
--> 容器編排系統,如 k8s,OpenShift 等
參考資料:https://www.thebyte.com.cn/architecture/container.html
- 容器進一步發展,從單一服務器擴展到整個集群、多個集群都使用容器構建系統,此時 docker 就力不從心了,需要更高級的專門系統,進行集群級的容器管理
容器運行時
粗略的來說,容器運行時 = 控制容器的管理軟件 + 提供外界管理的界面(命令行、API 等)
常見的容器運行時有:
- docker:容器的創始者,應用廣泛,但運行時需要 root 權限,不夠安全
- podman:redhat 改進的容器運行時,是 centos 預裝的運行時,無需 root 權限更安全
- k8s:實際上是容器編排軟件(容器編排 = 利用計算機自動化實現集群級大量容器的管理)
這里選用比較常見的 docker 運行時
安裝 docker 流程
參考資料(清華 docker-ce 源):https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/
清理沖突軟件、舊版軟件
容器運行時不能相互共存。即:如果要安裝 docker,則需要卸載 podman 等其他運行時
同一運行時的不同版本不能互存。如:如果要安裝新版 docker,則需要刪除原來存在的舊版
卸載沖突軟件(以 podman 為例)
-
查詢是否安裝了 podman 相關軟件
sudo rpm -qa | grep podman
若指令執行有相關輸出,則這些軟件是 podman 相關的軟件
-
卸載 podman(如果上面查詢到安裝了相關軟件)
-
將 podman 中所有容器停止
podman stop $(podman ps -aq)
-
將 podman 中所有容器刪除
podman rm -f $(podman ps -aq)
-
將 podman 中所有鏡像刪除
podman rmi $(podman images -q)
-
刪除 podman 軟件及工具鏈
sudo dnf uninstall -y podman podman-docker buildah skopeo
-
卸載原版docker
如果原來安裝過 docker,需要將原版 docker 先卸載yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
安裝docker
配置 docker 倉庫
這里第 3 步是關鍵,將原來的官方地址替換為清華源地址,實現 docker 軟件安裝時的加速sudo yum install -y yum-utils
# 配置原版倉庫地址
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 替換為清華源地址
sudo sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
安裝 docker
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
配置 docker 服務
注意:docker 相關指令,都需要 root 權限。root 權限配置可參考我的文章《配置 WSL (類 centos 的 oracle linux 官方鏡像)》
安裝完成后,docker 服務默認未啟動、且開機不自啟,這里設置為開機啟動、并直接啟動
# 設置 docker 開機啟動
sudo systemctl enable dockerd# 啟動 docker 服務
sudo systemctl start docker
若之后想控制 docker 的啟動/停止/重啟,設置/取消開機自啟,可執行以下指令
# 啟動/停止/重啟 docker
# 一般修改 docker 配置后,都需要重啟 docker 服務使配置生效
sudo systemctl start/stop/restart docker# 設置/取消 docker 開機自啟
sudo systemctl enable/disable docker
配置 docker 國內鏡像倉庫加速
- docker 安裝加速(前面介紹的):docker 軟件本身安裝的加速
- docker 鏡像倉庫加速(這一節介紹的):使用 docker 下載容器鏡像時的加速
通用配置如下
參考文章:https://blog.csdn.net/liuxin_hello/article/details/139654089
# 1. 打開 docker 配置文件
sudo vim /etc/docker/daemon.json# 在配置文件中添加以下內容
{ "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" // 可以繼續添加其他鏡像源地址....]
}
這里配置 daocloud.io 的加速
daocloud 鏡像加速地址詳情:https://github.com/DaoCloud/public-image-mirror
!!!感謝 dcaocloud 等國內公益鏡像加速服務提供者!!!
# 1. 打開 docker 配置文件
sudo vim /etc/docker/daemon.json# 在配置文件中添加以下內容
{ "registry-mirrors": [ "https://docker.daocloud.io","https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" ]
}# 2. 保存文件# 3. 重啟docker 服務
sudo systemctl restart docker
注意:
- 修改配置文件后,需要重啟 docker 服務
- 修改配置文件、重啟 docker 服務,都需要
root
權限