離線版centos8安裝docker筆記


  嗨嗨哈哈,已經很久沒有坐下來胡編亂造一點筆記了,平時雲服務器搞慣了,一個命令就安裝好了docker了的,但這次生不逢時的新機房就沒那么幸運了,有多不逢時超乎想象,不僅僅服務器沒有外網,就連周圍方圓一公里手機網絡都沒有,要查一個資料只能步行公里開外去搜尋網絡。

  不打無准備之戰:我就是一名菜鳥,加上這樣的環境,豈不是雪上加霜,為了能夠順利的完成部署工作,我也是拼了,哈哈哈哈,網上找了很多關於離線docker的安裝資料,各種花式玩法真是百家爭鳴,搜索珍藏了1 mole的資料,忐忑的去現場實施了。

  看到服務器配置的第一眼,哇靠,這配置真奢侈啊,妥妥的土豪,你沒看錯,這只是冰山一角。就問你一句話,奢不奢侈。

  初出茅廬,手忙腳亂:懷着忐忑的心開始第一次docker離線安裝之旅,第一次安裝穩穩的宣布失敗,根據錯誤飛奔到公里開外去找度大娘,找完度大娘又滿懷憧憬的去修復,修復舊的問題又有新的問題,這樣周而復始了N個回合,docker還是頑固的起不起來。該下班了,來日再戰。

  重整旗鼓,來日再戰:自己電腦安裝一個centos8虛擬機環境,持續搜索,嘗試多次,測試成功了,整理好思路,飽飽睡一覺,來日再戰。

  依葫畫瓢,一戰成功:第二天回到機房,找了一台新服務器,按照昨晚的成功經驗,一戰成功。同樣的方法繼續搞昨天未成功的服務器,還是宣告失敗,成功的回不去了。還好我有一個習慣,新環境按照,我都喜歡操作一步記錄一步,找到昨天的安裝筆記,一步一操作回撤,最后成功回爐再造。

哈哈哈,唧唧歪歪的說了半天,還沒有進入到今天的主題,嘿嘿,你們是不是為我的啰里啰唆感到着急,嗯嗯,好下面我把成功安裝的筆記整理一下發出來,供有需要的你做一個參考。

1.    下載docker離線安裝包

  Docker離線版安裝包下載很簡單,直接根據下面的地址選擇自己合適的版本下載即可:

  https://download.docker.com/linux/static/stable/x86_64/

  但是在具體版本選擇的時候給點建議:不要選擇太低的版本,低版本無論是性能還是其他都比理想,版本太新也不知道穩定性是否有問題,哈哈哈,是不是覺得我太保守啦,嗯嗯嗯,我的出發點就是穩定是第一要義,我建議選擇19以上版本,以上純屬個人狹隘觀點,如有冒犯多多包涵。

  我習慣了一直用的是docker-19.03.6.tgz,這次也就選擇它了。

2.    安裝docker

2.1安裝包上傳

       將上一步驟准備好的docker安裝包上傳到離線服務器,我習慣上傳到目錄:/home/installpack,具體目錄木有什么要求,根據自己愛好來操作。

 

2.2安裝包解壓

       首先需要進入到安裝包,並執行解壓,當然你用決定路徑,進入安裝包就多此一舉了哈,我不嫌麻煩,老老實實一步一步來。分別執行以下命令

cd /home/installpack
tar xzvf docker-19.03.6.tgz

  

  執行完畢以后,你會看到一個docker文件夾,那就大功告成,這一步我相信大家想錯都難噢,不會給你錯的機會。

 
        

2.3安裝

  安裝也很簡單了,只需執行以下兩個命令即可:     

cp docker/* /usr/bin/
dockerd &

  這一步也許你就沒那么幸運了,如果是第一次安裝,我想你還是會一如既往的順,只要不報錯,說明你就成功了。

2.4測試

       測試是否成功安裝,也就一句話的事,執行以下命令即可:

docker info

  顯示如下界面,那就真的恭喜您,第一步安裝成功,黎明就在眼前了。

  當然你也不需要太關心這一些內容是說明意思,或者很簡單的看安裝成功沒得,只要沒有紅色的字出現就是萬事大吉。

  如果錯了,也不要慌,下面還有呢

 

2.5報錯回撤

  無論是安裝過程中報錯還是測試結果報錯,那都是錯,如果錯了請按照以下步驟來完成回撤。

  首先想一想,是否還在網上找了其他大師的教程操作,如果找了,那么你首先要想一想做了哪一些操作,並全部還原回去,尤其是修改了某一些配置文件,是不是想起老師常說的好記性不如爛筆頭是很有道理的啦。

  接下來就做本次安裝文件刪除即可,分別執行以下命令:

rm -rf /var/run/docker
rm -rf /var/lib/docker
rm -rf /var/run/docker.pid
rm -rf /var/run/docker.sock

停止docker相關的進程
ps -aux | grep docker
kill掉查詢出來的全部進程

解除docker相關進程占用端口
netstat -nplt | grep docker 

  完成以上操作后,又執行一遍安裝+測試的命令即可,如果重復執行多次不爽,那我建議你可以拿出問題修復殺手鐧了:重啟服務器

3.    設置docker為系統服務

3.1創建配置containerd服務

  在etc目錄下創建containerd文件夾,並在containerd文件夾下創建containerd.service文件。相關命令如下:

	mkdir /etc/containerd
	touch /usr/lib/systemd/system/containerd.service
	vi /usr/lib/systemd/system/containerd.service

  其中containerd.service文件的內容填寫如下內容(先不關心里面配置的什么,先跑起來才是王道,后面有時間在慢慢研究):

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target
[Service]
ExecStartPre=/sbin/modprobe overlay
ExecStart=/usr/bin/containerd 
Delegate=yes
KillMode=process
LimitNOFILE=1048576
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
[Install]
WantedBy=multi-user.target

  啟動containerd服務,命令如下:

# 重新加載配置信息
systemctl daemon-reload

#設置containerd.service為開機啟動
systemctl enable containerd.service

#啟動containerd服務
systemctl start containerd.service

#查看containerd服務啟動狀態
systemctl status containerd.service

  依次執行以上命令,最后看到綠色的【active (running)】,那恭喜您containerd服務配置啟動成功。如果服務啟動失敗,還是終極殺手鐧來解決:先嘗試重啟docker,如還是不行在嘗試重啟服務器,反正我是沒有重啟

 

3.2創建配置docker.socket服務
在/usr/lib/systemd/system文件夾創建docker.socket文件,命令如下:
groupadd docker
touch /usr/lib/systemd/system/docker.socket
vi /usr/lib/systemd/system/docker. socket 

  其中docker.socket文件的內容填寫如下內容(先不關心里面配置的什么,先跑起來才是王道,后面有時間在慢慢研究):

[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
# 如果出現錯誤:chown socket at step GROUP: No such process, 可以修改下面的 SocketGroup=root 或創建 docker 用戶組(命令 groupadd docker)
SocketGroup=docker
[Install]
WantedBy=sockets.target

  啟動containerd服務,查看是否正常,命令如下:

# 重新加載配置信息
systemctl daemon-reload

#設置containerd.service為開機啟動
systemctl enable containerd.service

#啟動containerd服務
systemctl start containerd.service

#查看containerd服務啟動狀態
systemctl status containerd.service

 

  依次執行以上命令,最后看到綠色的【active (running)】,那恭喜您containerd服務配置啟動成功。如果服務啟動失敗,還是終極殺手鐧來解決:先嘗試重啟docker,如還是不行在嘗試重啟服務器,反正我是沒有重啟

 

3.3創建配置docker.service服務

在/usr/lib/systemd/system文件夾創建docker.service文件,命令如下:
touch /usr/lib/systemd/system/docker.service
vi /usr/lib/systemd/system/docker.service

  其中docker.service文件的內容填寫如下內容(先不關心里面配置的什么,先跑起來是王道,后面有時間在慢慢研究):

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3
# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
[Install]
WantedBy=multi-user.target

  啟動docker.service服務,命令如下:

#解除
systemctl unmask docker.service
systemctl unmask docker.socket

# 重新加載配置信息
systemctl daemon-reload

#設置docker為開機啟動
systemctl enable docker

#啟動docker服務
systemctl start docker

#查看docker服務啟動狀態
systemctl status docker

  依次執行以上命令,最后看到綠色的【active (running)】,那恭喜您docekr.service服務配置啟動成功。如果服務啟動失敗,還是終極殺手鐧來解決:先嘗試重啟docker,如還是不行在嘗試重啟服務器,反正我是重啟服務器才成功的。

 

  當看到docker正常啟動的那一刻,這次環境搭建之旅忐忑的心才算落地,實話。

4.    安裝總結

  走到這一步,恭喜您離線版docker搭建完成,簡單回顧一下本次安裝體會:

  戒急戒躁:不要急於求成,跟着文檔一個蘿卜一個坑的走好

  善於筆記:好記性不如爛筆頭,記錄自己的每一步操作,便於事后的回撤和總結

  本次整理沒有其他目的,就是一個環境部署筆記總結,正好如果您也在找,也許可以幫助到你一點什么呢,豈不是一件快事。

  好了,本次記錄就在此see good by。后面有時間在將docker中的相關鏡像遷移也做一個整理分享。

END
為了更高的交流,歡迎大家關注我的公眾號,掃描下面二維碼即可關注,謝謝:


免責聲明!

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



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