提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
@
- 前言
- 一、docker是什么?
- 二、docker compose是什么?
-
三、安裝步驟
- 1.Ubuntu安裝腳本
- 2.生成腳本
- 3.啟動(dòng)和驗(yàn)證
-
四、卸載步驟
- 1.Ubuntu卸載腳本
- 2.保存文件后設(shè)置執(zhí)行權(quán)限
- 3.運(yùn)行文件
- 4.驗(yàn)證是否刪除成功
-
CentOS
- 安裝腳本
- 卸載腳本
- 總結(jié)
個(gè)人博客:FaceMan' Blog 。
Github:FaceMan' GitHub 。
前言
在新建的服務(wù)器上,我們一般會(huì)用幾條命令來(lái)下載安裝docker和docker-compose,這里為了避免每次都去搜索安裝命令,所以寫(xiě)成腳本,本文僅支持Ubuntu\CentOS。
一、docker是什么?
Docker是一個(gè)開(kāi)源的容器化平臺(tái),用于構(gòu)建、部署和管理應(yīng)用程序。它采用了輕量級(jí)的容器技術(shù),可以在不同的操作系統(tǒng)上運(yùn)行,并提供了一種將應(yīng)用程序及其依賴(lài)項(xiàng)打包到可移植的容器中的方式。
以下是Docker的一些重要特點(diǎn)和概念:
-
容器化:Docker利用Linux內(nèi)核的容器功能來(lái)隔離應(yīng)用程序及其依賴(lài)項(xiàng)。每個(gè)容器都是一個(gè)獨(dú)立的運(yùn)行環(huán)境,具有自己的文件系統(tǒng)、進(jìn)程空間和資源限制。容器可以快速啟動(dòng)、停止和遷移,而且相互之間彼此隔離,避免了應(yīng)用程序之間的沖突和依賴(lài)問(wèn)題。
-
鏡像:Docker使用鏡像來(lái)構(gòu)建容器。鏡像是一個(gè)只讀的模板,包含了應(yīng)用程序運(yùn)行所需的所有文件系統(tǒng)、庫(kù)和依賴(lài)項(xiàng)。通過(guò)使用Dockerfile定義構(gòu)建步驟,可以創(chuàng)建自定義的鏡像。鏡像可以從Docker Hub等鏡像倉(cāng)庫(kù)中獲取,也可以通過(guò)構(gòu)建自己的鏡像進(jìn)行定制。
-
容器注冊(cè)表:Docker Hub是Docker官方的公共鏡像注冊(cè)表,提供了大量的基礎(chǔ)鏡像供用戶(hù)使用。除此之外,還有其他的公共和私有鏡像注冊(cè)表,用戶(hù)可以在其中存儲(chǔ)和分享自己的鏡像。
-
Docker引擎:Docker引擎是運(yùn)行和管理容器的核心組件。它包括一個(gè)守護(hù)進(jìn)程(Docker daemon)和一個(gè)命令行客戶(hù)端(Docker CLI)。守護(hù)進(jìn)程負(fù)責(zé)構(gòu)建、運(yùn)行和管理容器,而命令行客戶(hù)端提供了交互式的接口來(lái)與守護(hù)進(jìn)程進(jìn)行通信。
-
編排和管理工具:Docker提供了一系列的編排和管理工具,用于簡(jiǎn)化多個(gè)容器的部署和管理。例如,Docker Compose允許通過(guò)一個(gè)YAML文件描述多個(gè)容器的關(guān)系和配置,并通過(guò)一條命令啟動(dòng)、停止和擴(kuò)展整個(gè)應(yīng)用程序的容器集群。
-
跨平臺(tái)支持:Docker可以在不同的操作系統(tǒng)上運(yùn)行,包括Linux、Windows和MacOS等。對(duì)于Linux平臺(tái),Docker直接使用操作系統(tǒng)的容器功能;而對(duì)于Windows和MacOS,Docker使用一個(gè)輕量級(jí)的虛擬機(jī)(稱(chēng)為Docker Desktop)來(lái)提供容器化環(huán)境。
-
生態(tài)系統(tǒng):Docker擁有龐大的開(kāi)發(fā)者社區(qū)和豐富的生態(tài)系統(tǒng)。社區(qū)提供了大量的文檔、教程和示例代碼,以及交流和支持的平臺(tái)。此外,還有許多第三方工具和服務(wù),如監(jiān)控工具、CI/CD集成等,與Docker集成,進(jìn)一步擴(kuò)展了其功能和用途。
總結(jié)起來(lái),Docker是一個(gè)強(qiáng)大的容器化平臺(tái),通過(guò)將應(yīng)用程序及其依賴(lài)項(xiàng)打包到獨(dú)立的容器中,提供了更加靈活、可移植和可擴(kuò)展的應(yīng)用部署和管理方式。它已經(jīng)成為現(xiàn)代軟件開(kāi)發(fā)和運(yùn)維的重要工具之一。
二、docker compose是什么?
Docker Compose是一個(gè)用于定義和管理多個(gè)Docker容器的工具。它允許您使用簡(jiǎn)單的YAML文件描述應(yīng)用程序中的服務(wù)、網(wǎng)絡(luò)、存儲(chǔ)卷等配置,并通過(guò)一個(gè)命令行界面來(lái)啟動(dòng)、停止和管理這些容器。
以下是Docker Compose的一些重要特點(diǎn):
-
聲明式語(yǔ)法:Docker Compose使用聲明式的YAML文件來(lái)描述應(yīng)用程序的架構(gòu)和配置。您可以在文件中定義每個(gè)服務(wù)的鏡像、端口映射、環(huán)境變量、依賴(lài)關(guān)系等。這種聲明式語(yǔ)法使得定義和管理復(fù)雜的容器集群變得簡(jiǎn)單且可維護(hù)。
-
多容器應(yīng)用管理:Docker Compose專(zhuān)注于管理多個(gè)相關(guān)的容器,以構(gòu)建完整的應(yīng)用程序堆棧。通過(guò)一次性的命令,您可以啟動(dòng)、停止、重啟和銷(xiāo)毀整個(gè)容器集群,而不需要手動(dòng)處理每個(gè)容器。
-
容器間連接和通信:使用Docker Compose,您可以輕松地為容器之間創(chuàng)建連接和網(wǎng)絡(luò)。您可以定義容器之間的連接方式,使它們能夠相互通信和訪問(wèn)。這在構(gòu)建微服務(wù)架構(gòu)或多層應(yīng)用程序時(shí)非常有用。
-
可伸縮性和負(fù)載均衡:Docker Compose允許您設(shè)置容器的伸縮策略,以根據(jù)應(yīng)用程序的需要自動(dòng)擴(kuò)展或收縮容器。它還支持與負(fù)載均衡器集成,可以將流量分發(fā)到多個(gè)實(shí)例上,提高應(yīng)用程序的性能和可靠性。
-
環(huán)境隔離和測(cè)試:使用Docker Compose,您可以輕松地在開(kāi)發(fā)和測(cè)試環(huán)境中復(fù)制生產(chǎn)環(huán)境的配置。您可以創(chuàng)建一個(gè)本地的容器化開(kāi)發(fā)環(huán)境,確保應(yīng)用程序在不同環(huán)境下的一致性,并減少由于環(huán)境差異引起的問(wèn)題。
-
可插拔的架構(gòu):Docker Compose是可插拔的,可以與其他工具和服務(wù)集成,以滿(mǎn)足特定需求。例如,您可以與監(jiān)控和日志記錄工具集成,以監(jiān)視和管理容器的性能和狀態(tài)。
Compose V1語(yǔ)法: Compose V1語(yǔ)法是較早版本的Compose語(yǔ)法,其文件名通常為docker-compose.yml。以下是一些Compose V1語(yǔ)法的特點(diǎn):
-
services:使用services關(guān)鍵字定義要運(yùn)行的服務(wù)。每個(gè)服務(wù)都有一個(gè)名稱(chēng)和一組配置選項(xiàng)。
-
image:指定要使用的鏡像名稱(chēng)。
-
ports:定義要映射到主機(jī)上的容器端口。
-
volumes:指定要掛載到容器中的卷。
-
links:定義與其他服務(wù)之間的連接。
-
environment:設(shè)置容器中的環(huán)境變量。
-
depends_on:定義服務(wù)之間的依賴(lài)關(guān)系。
以下是一個(gè)Compose V1語(yǔ)法的示例:
version: '2'
services:
web:
image: nginx:latest
ports:
- 8080:80
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=secret
Compose V2語(yǔ)法: Compose V2語(yǔ)法是較新版本的Compose語(yǔ)法,其文件名通常為docker-compose.yaml或docker-compose.yml。以下是一些Compose V2語(yǔ)法的特點(diǎn):
services:與Compose V1相同,使用services關(guān)鍵字定義要運(yùn)行的服務(wù)。
image、ports、volumes、environment等選項(xiàng)與Compose V1相同。
引入了新的配置選項(xiàng),如networks、configs和secrets,用于更靈活地定義網(wǎng)絡(luò)、配置文件和機(jī)密信息。
以下是一個(gè)Compose V2語(yǔ)法的示例:
version: '3'
services:
web:
image: nginx:latest
ports:
- 8080:80
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=secret
networks:
app-net:
driver: bridge
除了以上介紹的不同之外,Compose V2語(yǔ)法還帶來(lái)了一些其他改進(jìn)和功能增強(qiáng),例如支持多個(gè)文件的擴(kuò)展性,可選項(xiàng)的驗(yàn)證和默認(rèn)值等。
需要注意的是,在使用Docker Compose時(shí),要根據(jù)您所使用的Compose版本選擇正確的語(yǔ)法,并確保在編寫(xiě)Compose文件時(shí)遵循該版本的語(yǔ)法規(guī)范。
三、安裝步驟
1.Ubuntu安裝腳本
代碼如下(示例):
#!/bin/bash
# 卸載當(dāng)前版本
echo "卸載當(dāng)前版本....."
sudo apt-get remove docker docker-engine docker.io containerd runc
y
# 設(shè)置apt源
echo "設(shè)置apt源....."
sudo apt-get update
# 安裝基礎(chǔ)依賴(lài)
echo "安裝基礎(chǔ)依賴(lài)....."
sudo apt-get install -y \
ca-certificates \
curl \
gnupg
# 啟用docker官方的源
echo "啟用docker官方的源....."
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 添加docker官方的GPG Key
echo "添加docker官方的GPG Key....."
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 更新軟件源
## 更新密鑰權(quán)限,可選 sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "更新軟件源....."
sudo apt-get update
echo "安裝最新版本或特定版本(Y(最新)/N(特定))?"
read answer
if [ "$answer" == "Y" -o "$answer" == "y" ]; then
echo "安裝最新版本"
# 安裝最新版本
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
elif [ "$answer" == "N" -o "$answer" == "n" ]; then
echo "查詢(xún)版本"
## 查詢(xún)版本
apt-cache madison docker-ce | awk '{ print $3 }'
echo "請(qǐng)指定版本:
例如5:20.10.23~3-0~ubuntu-bionic、5:20.10.23~3-0~ubuntu-focal、5:20.10.23~3-0~ubuntu-jammy"
read VERSION_STRING
# 安裝特定版本
# ## 安裝特定版本 ubuntu 18.04
# VERSION_STRING=5:20.10.23~3-0~ubuntu-bionic
# ## 安裝特定版本 ubuntu 20.04
# VERSION_STRING=5:20.10.23~3-0~ubuntu-focal
# ## 安裝特定版本 ubuntu 22.04
# VERSION_STRING=5:20.10.23~3-0~ubuntu-jammy
## 安裝
sudo apt-get install -y docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-compose-plugin
else
echo "無(wú)效的輸入"
fi
2.生成腳本
將上述命令保存為一個(gè)腳本文件(例如script.sh),并添加執(zhí)行權(quán)限。您可以在終端中使用以下命令來(lái)執(zhí)行該腳本:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-812969.html
chmod +x script.sh
./script.sh
3.啟動(dòng)和驗(yàn)證
# 查看docker
docker -v
# 老版本docker compose命令為
docker-compose -v
# 新版本docker compose命令為
docker compose version
# 查看docker服務(wù)是否啟動(dòng)
$ systemctl status docker
# 若未啟動(dòng),則啟動(dòng)docker服務(wù)
$ sudo systemctl start docker
# 驗(yàn)證hello world
$ sudo docker run hello-world
四、卸載步驟
1.Ubuntu卸載腳本
# 卸載舊版本的Docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
#刪除docker的鏡像文件
rm -rf /var/lib/docker
ps -ef|grep docker|grep -v grep|xargs kill -s 9
#卸載docker相關(guān)包
yum remove docker-*
yum remove docker-ce-cli-*
yum remove docker-scan-plugin*
# 刪除舊版docker-compose
rm -rf /usr/local/bin/docker-compose
rm -rf /usr/bin/docker-compose
2.保存文件后設(shè)置執(zhí)行權(quán)限
chmod +777 docker-uninstall.sh
3.運(yùn)行文件
sh docker-uninstall.sh
4.驗(yàn)證是否刪除成功
docker -v
docker-compose -v
CentOS
安裝腳本
#!/bin/bash
# 卸載當(dāng)前版本
echo "卸載當(dāng)前版本....."
sudo yum remove docker-ce docker-ce-cli containerd.io
# 設(shè)置yum源
echo "設(shè)置yum源....."
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安裝基礎(chǔ)依賴(lài)
echo "安裝基礎(chǔ)依賴(lài)....."
sudo yum install -y \
yum-plugin-copr \
device-mapper-persistent-data \
lvm2 \
git \
bash-completion \
bash-completion-extras \
iptables \
policycoreutils-python \
selinux-policy-base \
selinux-policy-targeted \
audit \
libseccomp-devel \
python3-pip \
python3-setuptools \
python3-wheel
# 更新軟件源
echo "更新軟件源....."
sudo yum update -y
echo "安裝最新版本或特定版本(Y(最新)/N(特定))?"
read answer
if [ "$answer" == "Y" -o "$answer" == "y" ]; then
echo "安裝最新版本"
# 安裝最新版本
sudo yum install -y docker-ce docker-ce-cli containerd.io
elif [ "$answer" == "N" -o "$answer" == "n" ]; then
echo "查詢(xún)版本"
## 查詢(xún)版本
yum list docker-ce --showduplicates | grep -i "docker-ce"
echo "請(qǐng)指定版本:
例如3:20.10.11-3.el7、3:20.10.11-3.el8"
read VERSION_STRING
# 安裝特定版本
## 安裝特定版本 centos 7
# VERSION_STRING=3:20.10.11-3.el7
## 安裝特定版本 centos 8
# VERSION_STRING=3:20.10.11-3.el8
## 安裝
sudo yum install -y docker-ce-$VERSION_STRING docker-ce-cli-$VERSION_STRING containerd.io
else
echo "無(wú)效的輸入"
fi
# 啟動(dòng)Docker服務(wù)
echo "啟動(dòng)Docker服務(wù)....."
sudo systemctl start docker
# 設(shè)置Docker開(kāi)機(jī)自啟
echo "設(shè)置Docker開(kāi)機(jī)自啟....."
sudo systemctl enable docker
# 配置Docker加速器
echo "配置Docker加速器....."
echo '{
"registry-mirrors": ["https://your_mirror_url"]
}' | sudo tee /etc/docker/daemon.json
# 重啟Docker服務(wù)
echo "重啟Docker服務(wù)....."
sudo systemctl daemon-reload
sudo systemctl restart docker
echo "Docker安裝完成"
卸載腳本
#!/bin/bash
# 停止和刪除所有Docker容器
echo "停止和刪除所有Docker容器....."
sudo docker stop $(sudo docker ps -aq)
sudo docker rm $(sudo docker ps -aq)
# 卸載Docker服務(wù)
echo "卸載Docker服務(wù)....."
sudo yum remove -y docker-ce docker-ce-cli containerd.io
# 刪除Docker相關(guān)文件和目錄
echo "刪除Docker相關(guān)文件和目錄....."
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
# 刪除Docker用戶(hù)組
echo "刪除Docker用戶(hù)組....."
sudo groupdel docker
# 刪除Docker存儲(chǔ)庫(kù)
echo "刪除Docker存儲(chǔ)庫(kù)....."
sudo rm -f /etc/yum.repos.d/docker-ce.repo
echo "Docker已成功卸載"
總結(jié)
我們可以通過(guò)用戶(hù)輸入指令來(lái)安裝不同版本的docker和docker compose,也可以一鍵卸載,使用腳本省心又快捷。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-812969.html
到了這里,關(guān)于Ubuntu一鍵安裝/卸載docker和docker compose,可指定版本或安裝最新版本。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!