1. 程式人生 > 其它 >Docker容器安裝

Docker容器安裝

技術標籤: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)

標準的容器和容器映象,提供了一個與Docker相容的命令列前端。
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

參考映象加速器地址:

  1. 中國科技大學:https://docker.mirrors.ustc.edu.cn
  2. 騰訊:https://mirror.ccs.tencentyun.com
  3. 網易:http://hub-mirror.c.163.com
  4. 七牛雲加速器:https://reg-mirror.qiniu.com
  5. 阿里雲-申請步驟:https://<你的ID>.mirror.aliyuncs.com