tlinux 3.1 配置 docker / docker-compose 一鍵部署 redis,rabbitmq
TencentOS Server(又名 Tencent Linux,簡稱 TS 或 tlinux)是騰訊針對云的場景研發的 Linux 作業系統,提供特定的功能及性能優化,為云> 服務器實體中的應用程式提供高性能及更加安全可靠的運行環境,TencentOS Server 提供免費使用,在 CentOS(及其他發行版)上開發的應用程式可> 直接在 TencentOS Server 上運行,用戶還可持續獲得騰訊云團隊的更新維護和技術支持,
TencentOS Server 環境說明(用戶態環境)
- TencentOS Server 2用戶態軟體包保持與最新版 CentOS 7兼容,即 CentOS 7版本的軟體包可以直接在 TencentOS Server 2.4 中使用,
- TencentOS Server 3用戶態軟體包保持與最新版 RHEL 8兼容,即 RHEL 8版本的軟體包可以直接在 TencentOS Server 3.1 中使用,
相關軟體資源包
- Docker Engine - Community v20.10.12
- Docker Compose version v2.2.3
- Redis v6.2.6
- RabbitMQ-v3.9.13-management
$ | 1 安裝 Dcoker
和 Docker 標準的發行版相比,Tencent OS Linux 針對 Docker 進行了定向的優化,
如果你想要享受對應的優化,則需要定向安裝騰訊云提供的 Docker 軟體,具體安裝方法也很簡單,執行如下兩行代碼即可,
1.1 安裝騰訊云提供的 Docker 軟體
yum -y install tencentos-release-docker-ce
yum -y install docker-ce
1.2 開啟 docker 資訊隔離
sysctl -w kernel.stats_isolated=1
TencentOS-kernel 容器內CPU、記憶體、行程、磁盤等資訊隔離
Tencent Linux 基于內核實作了類lxcfs的有關cpu、記憶體統計、行程、磁盤統計等資訊的隔離 在docker中,通過如下介面,看到的不再是docker所在的物理機系統的資訊,而是docker自己的統計資訊:
- /proc/cpuinfo
- /proc/meminfo
- /proc/stat
- /proc/uptimes
- /proc/loadavg
- /proc/diskstat
使用方式
- 系統級開關
sysctl -w kernel.stats_isolated=0|1
該開關可讀可寫,且只有系統級開關開啟的情況下,才能啟用資訊隔離,默認是關閉,
- 容器級別開關
- 資訊隔離控制開關(在docker里面進行配置)
sysctl -w kernel.container_stats_isolated=0|1
該開關可寫不可讀,且在系統級開關和它同時開啟的情況下才有效,默認開啟 系統可以在容器對應cgroup的CPU、cpuacct、cpuset、blkio等子系統的xxx.stats_isolated(xxx子系統名)來查看docker是否開啟了docker級別開關, 該開關系統只能查看,不能設定
- cpuinfo顯示控制開關
sysctl -w kernel.cpuquota_aware=0|1
默認情況下 /proc/cpuinfo 顯示的 cpu 個數與 cpuset 子系統的 cpus 是相同的, 而 lxcfs 則使用 cpu 子系統的 quota 來控制 cpu 的個數,為了和 lxcfs 一致,提供了該開關 默認開啟,即:/proc/cpuinfo 顯示的 cpu 個數基于 cpu 子系統的 quota 來控制,
1.3 配置騰訊云 Docker 鏡像
Docker 官方鏡像在海外,在國內下載的速度體驗一直不佳,在這種情況下,可以考慮配置騰訊云官方的內網鏡像,提升鏡像下載速度,
cat << EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
EOF
Docker 默認安裝路徑【/var/lib/docker】,該鏡像源組態檔【/etc/docker/daemon.json】,如果沒有配置過鏡像該檔案默認是不存的,需自行手動添加,
其他國內鏡像源:
- Docker中國區官方鏡像:https://registry.docker-cn.com
- 中國科技大學 => https://docker.mirrors.ustc.edu.cn
- 阿里云 => https://cr.console.aliyun.com
- 騰訊云 => https://mirror.ccs.tencentyun.com
- 網易 => http://hub-mirror.c.163.com
1.4 重啟 docker 服務
修改保存后,重啟Docker以使配置生效,
# 多載守護行程
sudo systemctl daemon-reload
# 重啟 docker 服務
sudo systemctl restart docker
# 設定 docker 開機啟動
sudo systemctl enable docker
查看鏡像源配置是否生效:
docker info | grep https
輸出資訊:
Registry: https://index.docker.io/v1/
https://mirror.ccs.tencentyun.com/
https://registry.docker-cn.com/
https://docker.mirrors.ustc.edu.cn/
https://cr.console.aliyun.com/
1.5 查看 docker 版本資訊
docker version
輸出資訊:
Client: Docker Engine - Community
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:45:22 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.16.12
Git commit: 459d0df
Built: Mon Dec 13 11:43:44 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.12
GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc:
Version: 1.0.2
GitCommit: v1.0.2-0-g52b36a2
docker-init:
Version: 0.19.0
GitCommit: de40ad0
到這里 docker 基本就安裝完成了,由于此處安裝的 docker 沒有集成 docker compose 工具,需自己手動安裝;
$ | 2 安裝 Docker Compose 工具
2.1 Compose 簡介
Compose 專案是 Docker 官方的開源專案,負責實作對 Docker 容器集群的快速編排,它是一個定義和運行多容器的 docker 應用工具,使用compose 你能通過 YMAL 檔案配置你自己的服務,然后通過一個命令創建和運行所有的服務,
Docker-Compose 將所管理的容器分為三層:
- 工程(project)
- 服務(service)
- 容器(container)
Docker-Compose 運行目錄下的所有檔案(docker-compose.yml,extends檔案或環境變數檔案等)組成一個工程,若無特殊指定工程名即為當前目錄名,
一個工程當中可包含多個服務,每個服務中定義了容器運行的 鏡像,引數,依賴 ,一個服務當中可包括多個容器實體,
- 服務(service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實體,每個服務都有自己的名 字、使用的鏡像、掛載的資料卷、所屬的網路、依賴哪些其他服務等等,即以容器為粒度,用戶需要Compose 所完成的任務,
- 專案(project):由一組關聯的應用容器組成的一個完成業務單元,在docker-compose.yml中定義,即是 Compose的一個組態檔可以決議為一個專案,Compose通過分析指定組態檔,得出組態檔所需完成的所 有容器管理與部署操作,
Docker-Compose 的工程組態檔默認為 docker-compose.yml,可通過環境變數 COMPOSE_FILE 或 -f 引數自定義組態檔,其定義了多個有依賴關系的服務及每個服務運行的容器,
使用一個 Dockerfile 模板檔案,可以讓用戶很方便的定義一個單獨的應用容器,在作業中,經常會碰到需要多個容器 相互配合來完成某項任務的情況,
例如:要部署一個Web專案,除了Web服務容器,往往還需要再加上后端的資料 庫服務容器,甚至還包括負載均衡容器等,
2.2 Compose 安裝
2.2.1 查看內核/作業系統/CPU資訊
uname -a
輸出資訊:
Linux TENCENT64.site 5.4.119-19-0009.1 #1 SMP Sun Jan 23 23:20:30 CST 2022 x86_64 x86_64 x86_64 GNU/Linux
2.2.2 下載對應的 compose 服務檔案
# 使用 curl 下載二進制檔案
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 使用 curl 下載 v2.2.3 版本,下載的檔案會輸出到 /usr/local/bin/docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
卸載 compose 服務檔案
# curl 命令安裝的卸載
sudo rm /usr/local/bin/docker-compose
# pip 命令安裝的卸載
pip uninstall docker-compose
查看更多 docker compose 發行版 => https://github.com/docker/compose/releases
2.2.3 給檔案路徑授權
sudo chmod +x /usr/local/bin/docker-compose
注意:如果命令docker-compose在安裝后失敗,請檢查您的路徑,您也可以創建指向/usr/bin或路徑中任何其他目錄的符號鏈接,
例如:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
2.2.4 查看 docker compose 版本
docker-compose version
輸出資訊:
Docker Compose version v2.2.3
查看更多
docker-compose --help
輸出資訊:
Usage: docker compose [OPTIONS] COMMAND
Docker Compose
Options:
--ansi string Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")
--compatibility Run compose in backward compatibility mode
--env-file string Specify an alternate environment file.
-f, --file stringArray Compose configuration files
--profile stringArray Specify a profile to enable
--project-directory string Specify an alternate working directory
(default: the path of the Compose file)
-p, --project-name string Project name
Commands:
build Build or rebuild services
convert Converts the compose file to platform's canonical format
cp Copy files/folders between a service container and the local filesystem
create Creates containers for a service.
down Stop and remove containers, networks
events Receive real time events from containers.
exec Execute a command in a running container.
images List images used by the created containers
kill Force stop service containers.
logs View output from containers
ls List running compose projects
pause Pause services
port Print the public port for a port binding.
ps List containers
pull Pull service images
push Push service images
restart Restart containers
rm Removes stopped service containers
run Run a one-off command on a service.
start Start services
stop Stop services
top Display the running processes
unpause Unpause services
up Create and start containers
version Show the Docker Compose version information
Run 'docker compose COMMAND --help' for more information on a command.
到這里 docker compose 就安裝完成了,接下來我們使用 compose 工具部署多容器;
查看 compose 更多資訊 => https://docs.docker.com/compose/compose-file/
$ | 3 Docker Compose 一鍵部署 Redis/ RabbitMQ 容器
上面兩個環節我們已經安裝好 Docker 和 Compose 工具,接下來我們撰寫一個 compose 的 yaml 組態檔,組態檔資訊內如如下:
3.1 撰寫 docker-compose-redis-rabbitmq.yaml 組態檔
# 創建 docker-compose-yaml 檔案夾
sudo mikdir docker-compose-yaml
# 進入 docker-compose-yaml 檔案夾
cd docker-compose-yaml
# 創建 yaml 檔案
sudo touch docker-compose-redis-rabbitmq.yaml
# 編輯 yaml 檔案
sudo vim docker-compose-redis-rabbitmq.yaml
docker-compose-redis-rabbitmq.yaml 組態檔內容如下:
version: '3.7'
services:
redis:
image: redis:6.2.6
container_name: redis-6.2.6
hostname: swskj-redis-6.2.6
restart: always
deploy:
resources:
limits:
cpus: '0.25'
memory: 500M
reservations:
cpus: '0.10'
memory: 10M
ports:
- "6379:6379" # redis的服務埠
networks:
- net_redis
volumes:
- /etc/localtime:/etc/localtime:ro # 設定容器時區與宿主機保持一致
- /chait-docker/compose-data/redis/redis.conf:/etc/redis/redis.conf
- /chait-docker/compose-data/redis/data:/data
command: redis-server /etc/redis/redis.conf --appendonly yes --requirepass "redis.666" # 啟動redis命令,開啟aof持久化,設定密碼訪問
privileged: true # 使容器內的root擁有真正root權限
rabbitmq:
image: rabbitmq:3.9.13-management
container_name: rabbitmq-3.9.13-management
hostname: swskj-rabbitmq-3.9.13
restart: always
deploy:
resources:
limits:
cpus: '0.25'
memory: 500M
reservations:
cpus: '0.10'
memory: 100M
ports:
- "15672:15672" # rabbitmq的web管理界面埠
- "5672:5672" # rabbitmq的服務埠
networks:
- net_rabbitmq
volumes:
- /chait-docker/compose-data/rabbitmq/data:/var/lib/rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=rabbitmq # 用戶名
- RABBITMQ_DEFAULT_PASS=rabbitmq.666 # 用戶密碼
networks:
net_redis:
driver: bridge
net_rabbitmq:
driver: bridge
保存檔案并退出
:wq!
3.2 命令執行 yaml 組態檔,運行 redis 和 rabbitmq 容器
sudo docker-compose -p compose-svc-redis-rabbitmq -f docker-compose-redis-rabbitmq.yaml up -d
拉取相關鏡像

容器創建成功

3.3 查看 compose 串列
docker-compose ls
輸出資訊:
NAME STATUS
compose-svc-redis-rabbitmq running(2)
3.4 查看 compose 創建的容器
docker container ls
輸出資訊:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45af6fbaa422 rabbitmq:3.9.13-management "docker-entrypoint.s…" 7 hours ago Up About an hour 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp rabbitmq-3.9.13-management
e633a68d1708 redis:6.2.6 "docker-entrypoint.s…" 7 hours ago Up About an hour 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
總結
- 假定 tlinux 3.1 系統環境以及部署好,并配置網路(nmcli)可訪問外網;
- 規劃好要相關配置軟體的版本環境;
- 熟悉 docker, compose 相關命令及用法;
- 熟悉相關部署的 docker 容器組件;
以上就是 tlinux 3.1 安裝 docker, docker-compose 工具,并部署 redis 和 rabbitmq 容器的所有程序,有需要的小伙伴趕快動手實踐喲 (^U^)ノ~YO
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423968.html
標籤:其他
