修改网络配置后重启网络:

systemctl restart NetworkManager

# 安装Docker
sudo dnf install docker -y

# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker

docker 配置代理:

vim /etc/docker/daemon.json

{
   "registry-mirrors":[
    "https://docker.1ms.run"
    ],
   "dns": ["8.8.8.8", "114.114.114.114"],
   "data-root": "/home/docker"
}

重启docker服务:

sudo systemctl restart docker

安装docker-compose

下载到指定目录:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

添加可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

# 创建项目目录
mkdir -p /data/mariadb/{data,config,logs}
cd /data/mariadb/

vim config/my.cnf

[mysqld]

datadir=/var/lib/mysql

port=3306

character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

max_connections=1000
slow_query_log=1
slow_query_log_file=/var/lib/mysql/slow.log
skip-name-resolve
lower_case_table_names=1
max_allowed_packet=32M
character-set-server=utf8
max_connections = 1000
group_concat_max_len = 102400
innodb_file_per_table
innodb_file_format = Barracuda
innodb_strict_mode = 0
expire_logs_days=2

创建 docker-compose.yml 文件:

vim docker-compose.yml

version: '3.8'

services:
  mariadb:
    image: mariadb:10.5
    container_name: mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "HN#jj#2025"
      MYSQL_DATABASE: "myapp"
      MYSQL_USER: "appuser"
      MYSQL_PASSWORD: "HN#jj#2025"
      TZ: "Asia/Shanghai"
    ports:
      - "3306:3306"
    volumes:
      - ./data:/var/lib/mysql/data
      - ./config/my.cnf:/etc/mysql/conf.d/my.cnf:ro
      - ./logs:/var/log/mysql
    command: 
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --datadir=/var/lib/mysql/data
    ulimits:
      nproc: 65535
      nofile:
        soft: 26666
        hard: 46666

# 修改目录权限,确保容器可以访问
sudo chown -R 1000:1000 ./data ./logs
sudo chmod -R 755 ./data ./logs ./config
# 启动服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f
# 连接到MariaDB
docker exec -it mariadb mysql -u root -p

# 在MySQL命令行中验证数据目录
SELECT @@datadir;

-- 创建用户
CREATE USER 'xfyh'@'%' IDENTIFIED BY 'HN#xuefen#2025';

-- 授予权限

GRANT ALL PRIVILEGES ON *.* TO 'xfyh'@'%';

flush privileges;

使用数据库自带工具备份:

挂载备份目录:

mount -t cifs -o username=administrator,password=Jjjt@china //192.168.32.188/diandaData /winshare

源数据库导出:

docker exec mariadb sh -c 'exec mariadb-dump -uxfyh -p"HN#xuefen#2025" --databases xfyh' > /winshare/xfyh/20251027.sql 2> error.log

自动执行:

vim mariadbBackupRun.sh

#!/bin/bash
current_day=$(date +"%Y-%m-%d")
docker exec mariadb sh -c 'exec mariadb-dump -uxfyh -p"HN#xuefen#2025" --databases xfyh' > /winshare/xfyh/$current_day.sql 2> error.log
 

chmod +x mariadbBackupRun.sh

crontab -e

30 1 * * 0-6  sh /root/mariadbBackupRun.sh 2>&1 > /root/mariadbBackup/log_incre_$(date +\%Y-\%m-\%d-\%H-\%M)

还原到目标数据库:

docker exec -i mariadb  sh -c 'exec mysql -uxfyh -p"HN#xuefen#2025"' < /winshare/xfyh/20251027.sql

启动docker 数据库:

#!/bin/bash
docker-compose down && docker-compose up -d

docker-compose安装redis集群配置文件示例:

services:
  redis-6379:
    image: redis:8.2.2
    container_name: redis-6379
    restart: always
    ports:
      - "172.16.0.100:6379:6379"
      - "172.16.0.100:16379:16379"
    volumes:
      - ./redis-conf/redis-6379.conf:/usr/local/etc/redis/redis.conf
      - ./data/data-6379:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redis-cluster-net

  redis-6380:
    image: redis:8.2.2
    container_name: redis-6380
    restart: always
    ports:
      - "172.16.0.100:6380:6380"
      - "172.16.0.100:16380:16380"
    volumes:
      - ./redis-conf/redis-6380.conf:/usr/local/etc/redis/redis.conf
      - ./data/data-6380:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redis-cluster-net

  redis-6381:
    image: redis:8.2.2
    container_name: redis-6381
    restart: always
    ports:
      - "172.16.0.100:6381:6381"
      - "172.16.0.100:16381:16381"
    volumes:
      - ./redis-conf/redis-6381.conf:/usr/local/etc/redis/redis.conf
      - ./data/data-6381:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redis-cluster-net

  redis-6382:
    image: redis:8.2.2
    container_name: redis-6382
    restart: always
    ports:
      - "172.16.0.100:6382:6382"
      - "172.16.0.100:16382:16382"
    volumes:
      - ./redis-conf/redis-6382.conf:/usr/local/etc/redis/redis.conf
      - ./data/data-6382:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redis-cluster-net

  redis-6383:
    image: redis:8.2.2
    container_name: redis-6383
    restart: always
    ports:
      - "172.16.0.100:6383:6383"
      - "172.16.0.100:16383:16383"
    volumes:
      - ./redis-conf/redis-6383.conf:/usr/local/etc/redis/redis.conf
      - ./data/data-6383:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redis-cluster-net

  redis-6384:
    image: redis:8.2.2
    container_name: redis-6384
    restart: always
    ports:
      - "172.16.0.100:6384:6384"
      - "172.16.0.100:16384:16384"
    volumes:
      - ./redis-conf/redis-6384.conf:/usr/local/etc/redis/redis.conf
      - ./data/data-6384:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redis-cluster-net

networks:
  redis-cluster-net:
    driver: bridge
    ipam:
      driver: default

 

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐