【系列】CentOS 7.3 離線安裝(無網絡環境)CI CD環境之docker+docker compose


目錄

1.【系列】CentOS 7.3 離線安裝(無網絡環境)CI CD環境之docker+docker compose(本篇在此)

2.【系列】CentOS 7.3 離線安裝(無網絡環境)CI CD環境之gitlab + gitlab runner(docker in docker)

3.【系列】CentOS 7.3 離線安裝(無網絡環境)CI CD環境之harbor 

4.【系列】CentOS 7.3 離線安裝(無網絡環境)CI CD環境之gitlab runner 關於私有docker倉庫配置 

5.【系列】CentOS 7.3 離線安裝(無網絡環境)CI CD環境之sonarqube配置 

 

網上有N多離線安裝的教程,但都不是在無網絡環境下安裝 ,在這里我會記錄在服務器無網絡環境下離線安裝CICD所需環境的完成過程

1.docker + docker compose

2.gitlab + gitlab runner (docker in docker)

3.habor

4.k8s

本篇記錄無網絡環境安裝docker+docker compse的過程

首先下載離線docker 和docker compose離線安裝包

這里注意不要下載rpm離線安裝包,因為會有可能因為系統中的包版本不對導致安裝docker rpm 包時出現依賴錯誤,但由於服務器無法連接網絡導致boom~

docker 離線包下載地址:https://download.docker.com/linux/static/stable/

docker compose 離線包下載地址:https://github.com/docker/compose/releases

這里我下載的是docker-19.03.9版本

1. 安裝docker

1.1 將離線包上傳到服務器上,執行以下腳本:

tar xzvf docker-19.03.9.tgz

cp docker/* /usr/bin/

dockerd &

如果中途沒有報錯,則說明安裝成功,可以用docker info 命令測試以下是否可以正常顯示

如果出現報錯,則執行以下命令情況剛剛的安裝,並重新執行1.中的腳本

rm -rf /var/run/docker
rm -rf /var/lib/docker
rm -rf /var/run/docker.pid
rm -rf /var/run/docker.sock文件
ps -aux | grep docker
停止docker相關進程
netstat -nplt | grep docker
解除docker相關進程占用端口

1.2 設置docker為系統服務

1.2.1 配置containerd

命令如下:

mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml
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 # 這是你 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
systemctl enable containerd.service
systemctl start containerd.service
systemctl status containerd.service

 

 

 1.2.2 配置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
systemctl enable containerd.service
systemctl start containerd.service
systemctl status containerd.service
1.2.3 配置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

 

在啟動服務之前需要先對服務進行解禁操作,執行以下命令:

systemctl unmask docker.service
systemctl unmask docker.socket

執行以下命令載入服務:

chmod +x /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl enable docker
systemctl start docker
systemctl status docker

如果出現啟動docker失敗,可以嘗試重啟服務器,我這里重啟后docker狀態就正常了

2. 安裝docker compose

將docker compose 離線安裝包上傳至服務器,在安裝包目錄下執行以下命令:

mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose 
chmod +x /usr/local/bin/docker-compose
docker-compose -v

 如出現docker-compose 命令不存在

 可執行下列命令,增加鏈接:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

到這里就安裝完成了。

 

參考:

1. https://blog.csdn.net/ws995339251/article/details/90580258

2. https://blog.csdn.net/catoop/article/details/102523847


免責聲明!

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



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