Docker容器安裝
Docker容器安裝
id: docker-install
categories: docker, podman, container
tags: container
status: Published
authors: balladpanda
Feedback Link: https://debris.cn
容器部署
背景瞭解
Duration: 5
容器是一個跨時代的開源專案,降低了雲端計算資源供應的成本,同時讓應用的部署、測試和分發都變得前所未有的高效和輕鬆。本實驗結合了實際生產實踐使用,詳細梳理了Docker如何在不同環境下進行安裝和部署,以及在部署後如何對Docker的常用功能進行相關設定以便更好地使用。
Docker與Podman的快速區別
Docker
Docker
是一個開源的應用容器引擎,屬於 Linux 容器的一種封裝,Docker 提供簡單的容器使用介面,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到Linux 機器上,但Docker也有 兩個主要缺點:
- Docker 需要在你的系統上執行一個守護程序;
- Docker 是以 root 身份在你的系統上執行該守護程式。
Podman
Podman
也是一個開源的容器管理工具,可以在大多數Linux平臺上使用,它是一種無守護程式的容器引擎,亦用於在Linux系統上開發,管理和執行任何符合Open Container Initiative(OCI)
Podman控制下的容器既可以由root使用者執行,也可以由非特權使用者執行。使用Podman後可以解決由於docker守護程式導致的啟動和安全問題。
Podman 和docker主要不同之處
Docker
需要在我們的系統上執行一個守護程序(docker daemon),Podman
而不需要.
啟動容器的方式不同:
docker cli
通過API跟 Docker Engine(引擎)互動告訴它我想建立一個 container,然後docker Engine才會呼叫OCI container runtime(runc)來啟動一個container。這代表contain- er的process(程序)不會是Docker CLI的child process(子程序),而是Docker Engine的child process。- Podman是直接給OCI containner runtime(runc)進行互動來建立container的,所以container process 直接是podman的child process。
- docker需要使用root使用者來建立容器,但是podman不需要
實驗準備
Duration: 0
- CentOS 7及以上版本的作業系統
- 配置國內加速docker-ce穩定倉庫映象源
- Linux核心版本不低於3.10(CentOS 7 滿足最低核心的要求)
-
Negative
- 建議升級核心到4.4以上,因為CentOS 7自帶的3.10核心存在一些bug,會導致Docker、Kubernetes執行不穩定,特別是高版本的Docker、Kubernetes(參考 https://github.com/kubernetes/kubernetes/issues/61937)。
升級核心
Duration: 10
通過Centos與核心版本對應關係可以找到系統版本與核心版本的對應關係
安裝依賴
檢視當前核心版本
uname -sr
載入公鑰
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安裝elrepo
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
載入elrepo-kernel元資料
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
檢視kernel版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
-
Positive
-
kernel-ml:ml是英文【mainline stable】的縮寫,elrepo-kernel中羅列出來的是最新的穩定主線版本。
kernel-lt:lt是英文【long term support】的縮寫,elrepo-kernel中羅列出來的長期支援版本。
安裝最新版本的kernel
yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel –y
檢視當前可用核心版本:
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
更改核心預設啟動順序,選擇最新核心版本,0代表檢視當前可用核心版本列表的左側索引號
grub2-set-default 0
生成grub檔案
grub2-mkconfig -o /boot/grub2/grub.cfg
重啟
reboot
刪除舊版本工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64
安裝新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
驗證
uname -sr
Docker安裝
Duration: 10
我們這次採用Docker。安裝Podman詳見實驗中關於Podman的文件.
安裝必要的軟體包
sudo yum install -y yum-utils
新增Docker國內映象下載倉庫
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
檢視倉庫中詳細的Dcoker版本
yum list docker-ce --showduplicates | sort -r
安裝最新版本Docker
sudo yum install docker-ce docker-ce-cli containerd.io
安裝指定版本
kubernetes有對應版本要求,根據要求選擇對應的版本號即可。
詳見:https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
示例:
sudo yum install docker-ce-19.03.9-3.el7 docker-ce-cli-19.03.9-3.el7 containerd.io
啟動Dcoker
sudo systemctl start docker
sudo systemctl enable docker
驗證
docker version
配置調優
Duration: 10
配置國內映象加速器
因為網際網路的原因,從國外下載映象會比較慢,所以需要單獨配置下國內的映象加速器。
tee /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
載入重啟Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
驗證
docker info
參考映象加速器地址:
- 中國科技大學:https://docker.mirrors.ustc.edu.cn
- 騰訊:https://mirror.ccs.tencentyun.com
- 網易:http://hub-mirror.c.163.com
- 七牛雲加速器:https://reg-mirror.qiniu.com
- 阿里雲-申請步驟:https://<你的ID>.mirror.aliyuncs.com