docker portainer的应用

portainer

sh 复制代码
docker volume create portainer_data
docker run \
-v /etc/localtime:/etc/localtime \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
--publish published=8005,target=9000,protocol=tcp,mode=host \
--name portainer \
--restart always -d \
10.101.10.9:8081/portainer/portainer-ce:2.16.2

mysql8

sh 复制代码
docker run -d \
  --name mysql8 \
  --restart unless-stopped \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD="123456" \
  -e TZ=Asia/Shanghai \
  -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf:ro \
  -v /home/mysql/data:/var/lib/mysql \
  -v /home/mysql/logs:/var/log/mysql \
  10.101.10.9:8081/eayc/mysql:8.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_general_ci \
  --default-authentication-plugin=mysql_native_password \
  --lower_case_table_names=1

执行上面的命令提示

sh 复制代码
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql8 (8b856e1a86c3eaa0e6ea0cd3ebe035c8849de0494a39d69d64f6f6a6060eb297):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.3:3306 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).

这个问题确实是 Docker 的 iptables 配置损坏了,解决方案

sh 复制代码
# 停止所有容器
docker stop $(docker ps -aq) 2>/dev/null

# 停止 Docker 服务
sudo systemctl stop docker

# 清理 iptables
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X

# 设置默认策略
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
#
# 启动 Docker
sudo systemctl start docker

使用stack启动的方式如下配置

yml 复制代码
version: '3.8'

services:
  mysql:
    image: 10.101.10.9:8081/eayc/mysql:8.0
    container_name: mysql8-simple
    restart: unless-stopped
    
    # 明确使用相同的环境变量
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - TZ=Asia/Shanghai
      # 不要设置 MYSQL_CHARSET 和 MYSQL_COLLATION,使用命令行参数
    
    ports:
      - "3306:3306"
    
    volumes:
      - /home/mysql/conf/my.cnf:/etc/mysql/my.cnf:ro
      - /home/mysql/data:/var/lib/mysql
      - /home/mysql/logs:/var/log/mysql
    
    # 使用与 docker run 完全相同的命令参数
    command: 
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --default-authentication-plugin=mysql_native_password
      - --lower_case_table_names=1

my.cnf

conf 复制代码
[mysqld]
# 基础配置
port = 3306
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock

# 字符集配置
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

# 表名大小写
lower_case_table_names = 1

# 连接配置
max_connections = 500
wait_timeout = 600

# InnoDB 配置(MySQL 8.0 使用新参数)
# 删除旧的:innodb_log_file_size 和 innodb_log_files_in_group
innodb_buffer_pool_size = 2G
innodb_redo_log_capacity = 256M  # 替换 innodb_log_file_size
innodb_flush_log_at_trx_commit = 2

# 网络配置
skip-name-resolve
max_allowed_packet = 64M

# SQL 模式
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 日志配置
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_error = /var/log/mysql/error.log

# 删除不存在的参数:
# slow_query_log_always_write_time=1  # 这个参数不存在!

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
相关推荐
春日见1 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
xuhe21 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
星火s漫天2 小时前
第一篇: 使用Docker部署flask项目(Flask + DB 容器化)
数据库·docker·flask
MonkeyKing_sunyuhua4 小时前
docker compose up -d --build 完全使用新代码打包的方法
docker·容器·eureka
醇氧4 小时前
【docker】mysql 8 的健康检查(Health Check)
mysql·docker·容器
技术路上的探险家4 小时前
Ubuntu下Docker与NVIDIA Container Toolkit完整安装教程(含国内源适配)
linux·ubuntu·docker
70asunflower8 小时前
用Docker创建不同的容器类型
运维·docker·容器
小Pawn爷9 小时前
3.Dockerfile
docker
CodeGolang9 小时前
Docker容器化部署Zabbix监控系统完整指南
docker·容器·zabbix
忆~遂愿9 小时前
Runtime 上下文管理:计算实例的生命周期、延迟最小化与上下文切换优化
java·大数据·开发语言·人工智能·docker