欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

tlinux3.1配置docker/docker-compose一键部署redis,rabbitmq容器

时间:2023-05-02
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.12Docker Compose version v2.2.3Redis v6.2.6RabbitMQ-v3.9.13-management $ | 1 安装 Dcoker

和 Docker 标准的发行版相比,Tencent OS Linux 针对 Docker 进行了定向的优化。
如果你想要享受对应的优化,则需要定向安装腾讯云提供的 Docker 软件,具体安装方法也很简单,执行如下两行代码即可。

1.1 安装腾讯云提供的 Docker 软件

yum -y install tencentos-release-docker-ceyum -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: trueServer: 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.yaml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。

一个工程/项目当中可包含多个服务,每个服务中定义了容器运行的 镜像,参数,依赖 。一个服务当中可包括多个容器实例。

工程/项目(project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yaml 中定义。即是 Compose 的一个配置文件可以解析为一个项目,Compose 通过分析指定配置文件,得出配置文件所需完成的所有容器管理与部署操作。服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。每个服务都有自己的名 字、使用的镜像、挂载的数据卷、所属的网络、依赖哪些其他服务等等,即以容器为粒度,用户需要 Compose 所完成的任务。容器(container):通过一种虚拟化技术来隔离运行在主机上的不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。 这种相互孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。

Docker-Compose 的工程配置文件默认为 docker-compose.yaml,可通过环境变量 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-composesudo 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] COMMANDDocker ComposeOptions: --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 nameCommands: 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 informationRun '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.9'services: redis: image: redis:6.2.6 container_name: redis-6.2.6 hostname: swskj-redis-6.2.6 restart: always deploy: replicas: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 3 window: 30s 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: replicas: 1 # 容器副本数量 restart_policy: # 重启策略 condition: on-failure # 开启故障 delay: 5s # 尝试重启等待时间 max_attempts: 3 # 最多尝试重启次数 window: 30s # 重启成功之前等待的时间 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!

关于 compose 3.x 版本的编写规范,请查看 => https://docs.docker.com/compose/compose-file/compose-file-v3/

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 STATUScompose-svc-redis-rabbitmq running(2)

3.4 查看 compose 创建的容器

docker container ls

输出信息:

ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES45af6fbaa422 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-managemente633a68d1708 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 相关命令,用法以及 yaml 配置文件的编写;熟悉相关部署的 docker 容器组件;

以上就是 tlinux 3.1 安装 docker, docker-compose 工具,并部署 redis 和 rabbitmq 容器的所有过程,有需要的小伙伴赶快动手实践哟 (^U^)ノ~YO

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。