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 标准的发行版相比,Tencent OS Linux 针对 Docker 进行了定向的优化。
如果你想要享受对应的优化,则需要定向安装腾讯云提供的 Docker 软件,具体安装方法也很简单,执行如下两行代码即可。
yum -y install tencentos-release-docker-ce
yum -y install docker-ce
sysctl -w kernel.stats_isolated=1
TencentOS-kernel 容器内CPU、内存、进程、磁盘等信息隔离
Tencent Linux 基于内核实现了类lxcfs的有关cpu、内存统计、进程、磁盘统计等信息的隔离 在docker中,通过如下接口,看到的不再是docker所在的物理机系统的信息,而是docker自己的统计信息:
使用方式
sysctl -w kernel.stats_isolated=0|1
该开关可读可写,且只有系统级开关开启的情况下,才能启用信息隔离。默认是关闭,
sysctl -w kernel.container_stats_isolated=0|1
该开关可写不可读,且在系统级开关和它同时开启的情况下才有效,默认开启 系统可以在容器对应cgroup的CPU、cpuacct、cpuset、blkio等子系统的xxx.stats_isolated(xxx子系统名)来查看docker是否开启了docker级别开关, 该开关系统只能查看,不能设置
sysctl -w kernel.cpuquota_aware=0|1
默认情况下 /proc/cpuinfo 显示的 cpu 个数与 cpuset 子系统的 cpus 是相同的。 而 lxcfs 则使用 cpu 子系统的 quota 来控制 cpu 的个数,为了和 lxcfs 一致,提供了该开关 默认开启,即:/proc/cpuinfo 显示的 cpu 个数基于 cpu 子系统的 quota 来控制。
Docker 官方镜像在海外,在国内下载的速度体验一直不佳,在这种情况下,可以考虑配置腾讯云官方的内网镜像,提升镜像下载速度。
cat << EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
EOF
Docker 默认安装路径【/var/lib/docker】,该镜像源配置文件【/etc/docker/daemon.json】,如果没有配置过镜像该文件默认是不存的,需自行手动添加。
其他国内镜像源:
修改保存后,重启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/
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 工具,需自己手动安装;
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。它是一个定义和运行多容器的 docker 应用工具。使用compose 你能通过 YMAL 文件配置你自己的服务,然后通过一个命令创建和运行所有的服务。
Docker-Compose 将所管理的容器分为三层:
Docker-Compose 运行目录下的所有文件(docker-compose.yaml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。
一个工程/项目当中可包含多个服务,每个服务中定义了容器运行的 镜像,参数,依赖 。一个服务当中可包括多个容器实例。
Docker-Compose 的工程配置文件默认为 docker-compose.yaml,可通过环境变量 COMPOSE_FILE 或 -f 参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器 相互配合来完成某项任务的情况。
例如:要部署一个Web项目,除了Web服务容器,往往还需要再加上后端的数据 库服务容器,甚至还包括负载均衡容器等。
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/
上面两个环节我们已经安装好 Docker 和 Compose 工具,接下来我们编写一个 compose 的 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/
sudo docker-compose -p compose-svc-redis-rabbitmq -f docker-compose-redis-rabbitmq.yaml up -d
docker-compose ls
输出信息:
NAME STATUS
compose-svc-redis-rabbitmq running(2)
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 安装 docker, docker-compose 工具,并部署 redis 和 rabbitmq 容器的所有过程,有需要的小伙伴赶快动手实践哟 (^U^)ノ~YO