【Docker实战】Centos7安装Docker、使用docker-compose启动单机版Redis、Nacos、xxl-job
一、前言
建议在CentOS 7.6及以上版本安装Docker。从CentOS 7.6开始,官方的Docker软件包已经包含在CentOS Extras存储库中,并且提供了对Docker的官方支持。如果您使用的是较旧的CentOS 7版本,可以考虑升级到最新的CentOS 7版本,以便获取更好的兼容性和支持。
在CentOS 7上安装Docker之前,需要确认以下事项:
1)系统要求:确保CentOS 7满足Docker的最低系统要求。CentOS 7的内核版本必须在3.10及以上。可以通过以下命令查看系统版本。
cat /etc/centos-release
2)卸载旧版本:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
二、Centos7安装docker
2.1 安装docker
# 1、更新yum包
sudo yum update
# 2、安装docker所需的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、指定下载docker所需的yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4、安装docker
sudo yum install docker-ce
# 5、验证
docker -v
2.2 设置镜像下载地址
# 编辑以下文件
vi /etc/docker/daemon.json
# 在文件中添加以下内容
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
2.2 启动docker
# 启动docker
systemctl start docker
# 停止docker
systemctl stop docker
# 重启docker
systemctl restart docker
# 查看docker状态
systemctl status docker
# 设置开机启动
systemctl enable docker
更多docker命令,可以参阅:https://blog.csdn.net/mst_sun/article/details/135133934
三、Centos7安装docker-compose
docker-compose 简介:https://blog.csdn.net/mst_sun/article/details/135295696
docker-compose 有两种安装方式:
1)插件安装,安装后使用命令是:docker compose(中间是空格)
2)独立安装,安装后使用命令是:docker-compose(中间是短横线)
支持同时采用两种方式安装 compose,安装后可以同时使用 docker-compose 和 docker compose
官方文档:https://docs.docker.com/compose/install/
3.1 插件安装
按照本文第二步安装好 docker 后,compose 插件是自动捆绑安装好的。
# 查看docker compose插件版本
docker compose version
# 安装docker compose插件
sudo yum install docker-compose-plugin
3.2 独立安装
以 2.23.3 为例:
# 下载compose,如果下载比较慢也可以选择从github下载到本地,再上传到服务器。
curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 查看compose版本
docker-compose version
四、使用docker-compose部署单机版redis、nacos、xxl-job
4.1 创建docker网络
# 创建docker网络,便于容器可以通过网络与宿主机和其他容器通信
docker network create network-java
4.2 redis准备
1)拉取镜像:
docker pull redis:7.0.14
2)创建挂载目录:
mkdir -p /usr/local/docker/redis/data
3)上传配置文件:
下载相应版本的redis.conf 文件:https://github.com/redis/redis/tags,上传至:/usr/local/docker/redis
修改 redis.conf 文件中的参数 bind 为 0.0.0.0
4.3 nacos准备
1)拉取镜像:
docker pull nacos/nacos-server:v2.2.3
2)启动一次nacos:
docker run --name nacos -d \
-e MODE=standalone \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.2.3
3)同步nacos文件到宿主机:
mkdir -p /usr/local/docker/nacos
docker cp nacos:/home/nacos/bin /usr/local/docker/nacos
docker cp nacos:/home/nacos/conf /usr/local/docker/nacos
docker cp nacos:/home/nacos/data /usr/local/docker/nacos
docker cp nacos:/home/nacos/logs /usr/local/docker/nacos
4)停止并删除容器:
docker stop nacos && docker rm nacos
5)执行nacos初始化sql:
先创建nacos数据库,再执行mysql-schema.sql
4.4 xxl-job准备
1)拉取镜像:
docker pull xuxueli/xxl-job-admin:2.4.0
2)执行初始化脚本:
下载地址:tables_xxl_job.sql
3)创建挂载目录:
mkdir -p /usr/local/docker/xxl-job/logs
mkdir -p /usr/local/docker/xxl-job/conf
下载配置文件,并上传到 conf 文件夹下:application.properties
编辑配置文件,修改 mysql 连接信息:
spring.datasource.url=jdbc:mysql://[IP 或 mysql容器名]:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
4.5 编写docker-compose.yml
查看端口使用情况的命令:
sudo netstat -tulpn | grep :6379
在 /usr/local/docker 目录下,新建 docker-compose.yml 文件,内容如下:
# 定义compose语义版本
version: '3.8'
# 定义服务
services:
redis:
image: redis:7.0.14
container_name: redis
# 重启策略:在容器手动停止时以外的任何原因退出时重启
restart: unless-stopped
# 启动redis服务;设置密码为123456;开启redis持久化
command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly yes
# 设置容器时区、语言环境
environment:
TZ: Asia/Shanghai
LANG: en_US.UTF-8
volumes:
# 需要下载相应版本的redis.conf文件,下载地址:https://github.com/redis/redis/tags
- "/usr/local/docker/redis/redis.conf:/etc/redis/redis.conf"
# 挂载持久化数据目录
- "/usr/local/docker/redis/data:/data"
ports:
# 端口映射
- "6379:6379"
networks:
- network-java
nacos:
image: nacos/nacos-server:v2.2.3
container_name: nacos
restart: unless-stopped
volumes:
- "/usr/local/docker/nacos/bin:/home/nacos/bin"
- "/usr/local/docker/nacos/conf:/home/nacos/conf"
- "/usr/local/docker/nacos/data:/home/nacos/data"
- "/usr/local/docker/nacos/logs:/home/nacos/logs"
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
# 修改mysql连接信息,TODO
- MYSQL_SERVICE_HOST=xx.xx.xx.xx
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=xxxxxx
# 修改JVM参数,可根据实际使用情况进行修改
- JVM_XMS=512m #-Xms default: 1g
- JVM_XMX=512m #-Xmx default: 1g
- JVM_XMN=256m #-Xmn default: 512m
- JVM_MS=128m #-XX:MetaspaceSize default: 128m
- JVM_MMS=256m #-XX:MaxMetaspaceSize default: 320m
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
ports:
- "8848:8848"
- "9848:9848"
- "9849:9849"
networks:
- network-java
healthcheck:
test: ["CMD-SHELL", "echo 'ruok' | curl -s telnet://localhost:8848 || exit 1"]
retries: 10
xxl-job:
image: xuxueli/xxl-job-admin:2.4.0
container_name: xxl-job
restart: no
environment:
TZ: Asia/Shanghai
LANG: en_US.UTF-8
PARAMS: '--spring.config.location=/application.properties'
volumes:
- "/usr/local/docker/xxl-job/logs:/data/applogs"
- "/usr/local/docker/xxl-job/conf/application.properties:/application.properties"
ports:
- "8089:8080"
networks:
- network-java
networks:
network-java:
external: true
4.6 启动服务
# 进入 docker-compose.yml 所在目录,执行以下命令
docker-compose up -d