一、安裝要求說明
要安裝Docker,需要CentOS 7 & 8 64位核心3.10及以上的維護版本。不支援測試或存檔版本。
必須啟用centos-extras儲存庫。 預設情況下,此儲存庫已啟用,但如果已將其禁用,則需要重新啟用它。
建議使用overlay2儲存驅動程式。
注:Docker現在分為兩個版本,Docker CE和Docker EE。其中Docker CE為開源版,Docker EE為企業版。
本文中使用本地VM虛機部署測試。
OS:CentOS Linux release 7。8。2003 (Core) 3。10。0-1160。15。2。el7。x86_64
虛機配置:2核CPU、4G記憶體
注:①系統為最小化安裝,部署前已完成系統初始化、核心及安全最佳化;
②Iptables防火牆已啟用,Docker服務啟動容器時對映的埠會自動新增至Iptables防火牆相關規則中,不需要手動更改Iptables規則。
本文參考官方部署文件:
https://docs。docker。com/install/linux/docker-ce/centos/
Docker版本更新說明:
https://docs。docker。com/engine/release-notes/
二、檢視系統及核心版本
cat /etc/redhat-releaseuname -r
三、解除安裝舊版本
舊版本Docker被稱為docker或docker-engine。 如果已安裝這些,請解除安裝它們以及相關的依賴項。
yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
注:
如果沒有安裝這些軟體包,那就沒關係。保留/var/lib/docker/的內容,包括映象、容器、卷和網路。 Docker CE包現在稱為docker-ce。
四、安裝Docker CE
可根據需要以不同方式安裝Docker CE:
①設定Docker官方YUM源進行安裝,以便於安裝和升級任務。這是推薦的方法。
②下載RPM軟體包並手動安裝並完全手動管理升級。這在沒有聯網的伺服器作業系統上安裝Docker的情況下非常有用。
③在開發和測試環境中,可使用指令碼來自動安裝Docker。
下面會一一介紹三種安裝方式,但本文中的虛擬測試環境使用的是YUM安裝最新版本Docker。
4.1 使用儲存庫(即YUM源倉庫)安裝
1) 安裝yum-utils包
yum -y install yum-utils //yum-utils提供yum-config-manager實用程式
2) 安裝設定YUM源倉庫
## 官網yum-config-manager ——add-repo https://download。docker。com/linux/centos/docker-ce。repo## 國內阿里雲yum-config-manager ——add-repo http://mirrors。aliyun。com/docker-ce/linux/centos/docker-ce。repo
3) 啟用測試或每晚儲存庫
(可選操作)
這些儲存庫包含在上面的docker。repo檔案中,但預設情況下處於禁用狀態。 可以將它們與穩定儲存庫(即YUM源)一起啟用。
yum-config-manager ——enable docker-ce-testyum-config-manager ——enable docker-ce-nightly
可以透過使用——disable標誌執行yum-config-manager命令來禁用測試或每晚儲存庫。 要重新啟用它,請使用——enable標誌。 以下命令禁用測試或每晚儲存庫。
yum-config-manager ——disable docker-ce-testyum-config-manager ——disable docker-ce-nightly
注:從Docker 17.06開始,穩定版本也會被推送到測試或每晚儲存庫。
4) 更新yum軟體包索引
yum makecache fast
5) 安裝Docker CE
在生產環境中,應該安裝特定版本的 Docker CE,而不是使用最新版本。
## 安裝最新版本:
yum -y install docker-ce docker-ce-cli containerd。io
## 安裝指定版本:
使用命令列出repo中的可用穩定版本,按版本號(從高到低)對結果進行排序,返回的列表取決於啟用的儲存庫(源),並且特定於您的CentOS版本,本文件使用的CentOS7。6系統,即所返回的版本以。el7字尾表示。
yum list docker-ce。x86_64 ——showduplicates | sort -r //從高到低列出Docker-ce的版本
透過其完全合格的軟體包名稱安裝特定版本,該軟體包名稱是軟體包名稱(docker-ce)加上版本字串(第二列),從第一個冒號(:)到第一個連字元,以連字元(-)分隔。例如,docker-ce-20。10。2。
yum -y install docker-ce-
例如:指定版本(docker-ce-20。10。2)進行安裝:
yum -y install docker-ce-20。10。2 docker-ce-cli-20。10。2 containerd。io
4.2 從軟體包安裝
如果無法使用Docker的儲存庫來安裝Docker,則可以下載rpm包檔案進行手動安裝。並且每次要升級Docker時,都需要下載一個新檔案。
訪問官網https://download。docker。com/linux/centos/ 並選擇您的CentOS版本。然後瀏覽x86_64/stable/Packages/ 並下載所需安裝Docker版本的。rpm檔案。
注意:要安裝夜間或測試(預釋出)軟體包,請將上述URL中的stable更改為nightly或test。
將下面的路徑更改為所需Docker版本軟體包的下載路徑。
yum -y install /path/to/package。rpm
4.3 使用指令碼安裝
Docker在get。docker。com和test。docker。com上提供了便捷指令碼,用於快速、非互動地將Docker CE的邊緣和測試版本安裝到開發環境中。 指令碼的原始碼位於docker-install儲存庫中。 建議不要在生產環境中使用這些指令碼,並且在使用它們之前應該瞭解潛在的風險:
①指令碼需要root或sudo許可權才能執行。 因此在執行指令碼之前,應仔細檢查和稽核指令碼。
②這些指令碼會嘗試檢測您的Linux發行版和版本,併為您配置包管理系統。 此外,指令碼不允許您自定義任何安裝引數。 從Docker的角度或您自己組織的指導方針和標準來看,這可能會導致配置不受支援。
③指令碼安裝包管理器的所有依賴項和建議,而不要求確認。這可能會安裝大量軟體包,具體取決於主機的當前配置。
④該指令碼不提供選項來指定要安裝的Docker版本,並安裝在“邊緣”通道中釋出的最新版本。
⑤如果已使用其他機制在主機上安裝了Docker,請不要使用便捷指令碼。
## 安裝步驟
cd /data/toolscurl -fsSL https://get。docker。com -o get-docker。shsh get-docker。sh
注:
①此示例使用get。docker。com上的指令碼在Linux上安裝最新版本的Docker CE。 要安裝最新的測試版本,請改用test。docker。com。 在每個命令中,將每次出現的get替換為test。
②Docker CE是基於DEB的發行版上自動啟動。安裝Docker CE後,在基於RPM的發行版上,需要使用適當的systemctl或service命令手動啟動它。 非root使用者預設情況下無法執行Docker命令。
③若使用指令碼安裝了Docker,則應直接使用軟體包管理器升級Docker。 重新執行指令碼沒有任何好處,如果它嘗試重新新增儲存庫,則可能會導致問題。
4.4 啟動Docker
systemctl start docker
4.5 驗證
透過執行hello-world映像驗證是否正確安裝了docker
docker run hello-world
此命令下載測試映像並在容器中執行它。 當容器執行時,它會列印一條資訊性訊息並退出。
使用命令檢視會看到本地Docker映象庫中多了一個Hello-world,Docker容器庫中也多了一個Hello-world。
docker ps -adocker image list
五、Docker服務管理
啟動:systemctl start docker
重啟:systemctl restart docker
停止:systemctl stop docker
開機啟動:systemctl enable docker
檢視狀態:systemctl status docker
六、核心引數修改
預設配置下,如果在CentOS使用Docker CE看到下面的這些警告資訊:
WARNING: IPv4 forwarding is disabledWARING: bridge-nf-call-iptables is disabledWARING: bridge-nf-call-ip6tables is disabled
需啟用這三個功能,修改/etc/sysctl。conf檔案,新增如下內容
net。ipv4。ip_forward = 1net。bridge。bridge-nf-call-ip6tables = 1net。bridge。bridge-nf-call-iptables = 1
重新載入即可
/sbin/sysctl -p
若執行/sbin/sysctl –p時出現如下報錯
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directorysysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
解決方法:
modprobe br_netfilter
七、配置映象加速
鑑於國內網路問題,後續拉取Docker映象十分緩慢,可配置加速器來解決。
官方文件:
https://docs。docker。com/registry/recipes/mirror/#run-a-registry-as-a-pull-through-cache
Docker國內映象:
官方中國:https://registry。docker-cn。com網易:http://hub-mirror。c。163。com中國科技大學:https://docker。mirrors。ustc。edu。cn阿里雲容器生成自己的加速地址登入:https://cr。console。aliyun。com/ 得到一個專屬的映象加速地址,類似於“https://1234abcd。mirror。aliyuncs。com”
在Linux系統下,新版的 Docker 使用 /etc/docker/daemon。json 來配置 Daemon。
請在該配置檔案中加入(沒有該檔案的話,請先建一個):
mkdir -p /etc/dockervi /etc/docker/daemon。json //輸入如下內容{ “registry-mirrors”: [ “https://registry。docker-cn。com”, “http://hub-mirror。c。163。com”, “https://docker。mirrors。ustc。edu。cn” ]}
配置成功後,重啟服務:
## 重新載入服務配置檔案systemctl daemon-reload## 重啟docker後臺服務systemctl restart docker
檢視是否成功
docker info
八、修改預設儲存路徑
預設情況下,docker的預設儲存路徑是/var/lib/docker,這相當於直接掛載系統目錄下,而一般在安裝系統時,這個區都不會太大,所以如果長期使用docker應用,就需要把預設的路徑更改到分割槽大的路徑下或外掛儲存。
1。新建儲存目錄
mkdir -p /data/docker //本文中系統分割槽掛載點/data空間大
2。修改docker的docker。service配置檔案
vi /usr/lib/systemd/system/docker。service######註釋原先的#ExecStart=/usr/bin/dockerd -H fd:// ——containerd=/run/containerd/containerd。sock######新增如下內容ExecStart=/usr/bin/dockerd -H fd:// ——containerd=/run/containerd/containerd。sock ——graph=/data/docker
3。重啟docker服務
systemctl daemon-reloadsystemctl restart docker
4。檢視docker的輸出資訊,確定下是否修改成功
docker info
5。檢視修改後目錄生成的檔案資訊
ls /data/docker
九、升級Docker CE
要升級Docker CE,需下載較新的軟體包檔案並重復安裝過程
yum -y upgrade docker-ce
十、解除安裝Docker CE
解除安裝Docker CE,CLI和Containerd軟體包:
yum -y remove docker-ce docker-ce-cli containerd。io
主機上的映象、容器、卷或自定義配置檔案不會自動刪除,必須手動刪除所有映象、容器、卷及所有已編輯的配置檔案。
rm -rf /var/lib/docker## 本文中使用下列命令rm -rf /data/docker