TencentOS Server 配置 docker / docker-compose 一键部署 redis,rabbitmq 容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: TencentOS Server (tlinux 3.1)配置 docker,compose 工具,并一键部署多容器(redis,rabbitmq)。TencentOS Server 是腾讯公司自主研发的定制化服务器操作系统。该系统集成了众多服务 器系列的优点,加入自主研发的软件,便于用户操作使用,提供全方位(内核及用户态)的 操作系统支持...

tlinux 简介

TencentOS Server(又名 Tencent Linux,简称 TStlinux)是腾讯针对云的场景研发的 Linux 操作系统,提供特定的功能及性能优化,为云> 服务器实例中的应用程序提供高性能及更加安全可靠的运行环境。TencentOS Server 提供免费使用,在 CentOS(及其他发行版)上开发的应用程序可> 直接在 TencentOS Server 上运行,用户还可持续获得腾讯云团队的更新维护和技术支持。

TencentOS Server 环境说明(用户态环境)

  • TencentOS Server2 用户态软件包保持与最新版 CentOS7 兼容,即 CentOS7 版本的软件包可以直接在 TencentOS Server2.4 中使用。
  • TencentOS Server3 用户态软件包保持与最新版 RHEL8 兼容,即 RHEL8 版本的软件包可以直接在 TencentOS Server3.1 中使用。

相关软件资源包

  1. Docker Engine - Community v20.10.12
  2. Docker Compose version v2.2.3
  3. Redis v6.2.6
  4. 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

该开关可读可写,且只有系统级开关开启的情况下,才能启用信息隔离。默认是关闭,

  • 容器级别开关
  1. 信息隔离控制开关(在docker里面进行配置)
sysctl -w kernel.container_stats_isolated=0|1

该开关可写不可读,且在系统级开关和它同时开启的情况下才有效,默认开启 系统可以在容器对应cgroup的CPU、cpuacct、cpuset、blkio等子系统的xxx.stats_isolated(xxx子系统名)来查看docker是否开启了docker级别开关, 该开关系统只能查看,不能设置

  1. 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】,如果没有配置过镜像该文件默认是不存的,需自行手动添加。

其他国内镜像源:

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.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-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 容器

上面两个环节我们已经安装好 DockerCompose 工具,接下来我们编写一个 composeyaml 配置文件,配置文件信息内如如下:

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

拉取相关镜像

compose pull images

容器创建成功

compose 创建容器

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 

总结

  1. 假定 tlinux 3.1 系统环境已经部署,并配置网络(nmcli)可访问外网;
  2. 规划好相关配置软件及其版本环境;
  3. 熟悉 docker, compose 相关命令,用法以及 yaml 配置文件的编写;
  4. 熟悉相关部署的 docker 容器组件;

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

目录
相关文章
kde
|
2月前
|
Kubernetes 关系型数据库 文件存储
手把手教你完成极空间 NAS Docker 镜像加速配置
本教程详细介绍了如何在极空间NAS上配置轩辕镜像加速器,以提升Docker镜像的下载速度与稳定性。内容涵盖账号注册、网络确认、加速器设置及验证方法,并提供常见问题解决方案,帮助用户高效完成容器化应用部署。
kde
814 1
|
5月前
|
Prometheus 监控 Cloud Native
Prometheus配置docker采集器
本文介绍了如何使用 Prometheus 监控 Docker 容器,涵盖环境准备、配置文件编写及服务启动等步骤。首先确保安装 Docker 和 Docker Compose,接着通过 `docker-compose.yml` 配置 Prometheus 和示例应用。创建 `prometheus.yml` 指定数据采集目标,最后用 `docker-compose up -d` 启动服务。文章还展示了甘特图和类图,帮助理解服务状态与关系,助力提升系统可靠性和可维护性。
188 11
kde
|
2月前
|
文件存储 数据安全/隐私保护 开发者
群晖NAS Docker镜像源加速配置教程
本教程介绍了群晖NAS用户如何通过配置轩辕镜像加速服务提升Docker镜像拉取速度。内容包括配置前准备、详细设置步骤及日常使用说明,帮助用户快速完成配置并享受高效稳定的镜像下载体验。
kde
1685 59
kde
|
Docker 容器 文件存储
飞牛fnOS Docker镜像加速配置全攻略
本文介绍了如何在飞牛fnOS中配置Docker镜像加速服务,通过设置轩辕镜像仓库加速器,提升镜像拉取速度与稳定性。内容涵盖配置前准备、加速源设置、首选加速源调整及使用指南,帮助用户高效完成镜像操作。
kde
1063 56
|
2月前
|
Java 分布式数据库 Docker
使用Docker配置并连接HBase的Java API
本流程概要的解释了如何在Docker上配置并启动HBase服务,并通过Java API进行连接和操作表,不涉及具体的业务逻辑处理和数据模型设计,这些因应用而异需由开发者根据实际需求进行实现。
144 13
|
3月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
就这样,你成功地用魔法召唤出了RabbitMQ,还把它和你的应用程序连接了起来。现在,消息会像小溪流水一样,在你的系统中自由流淌。别忘了,兔子们不喜欢孤独,他们需要你细心的关怀,不时地监控它们,确保他们的世界运转得井井有条。
232 18
|
3月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
391 4
|
5月前
|
NoSQL Redis 数据库
Docker平台上的Redis镜像运行
这就是如何在Docker平台上运行Redis镜像的全部过程。走进Docker和Redis的世界,探索更多可能!
378 10
|
6月前
|
数据安全/隐私保护 Docker 容器
docker pull 相关配置
通过本文的介绍,您已经了解了如何通过镜像源配置、登录私有仓库、设置网络代理以及其他优化策略来提升 `docker pull`命令的效率和可靠性。这些配置不仅能够显著加快镜像下载速度,还能确保在不同网络环境下的稳定性。通过合理使用这些配置,您可以更好地管理和优化Docker环境中的镜像拉取操作。
728 18