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
相关推荐
Rabbit_QL4 小时前
【网络设置】Docker 自定义网络深度解析:从踩坑到工程实践
网络·docker·容器
计算机小手7 小时前
使用 Poste.io 自建邮件服务器,Docker一键快速部署
经验分享·docker
天意pt10 小时前
Blog-SSR 系统操作手册(v1.0.0)
前端·vue.js·redis·mysql·docker·node.js·express
沫离痕10 小时前
windows安装docker实例
windows·docker·容器
唯情于酒12 小时前
Docker部署若依(前后端分离版)
vue.js·docker·容器
主公不搬砖13 小时前
Nacos 2.5.2 国产信创 kingbase适配
java·docker·nacos·信创·kingbase·国产适配
ysy164806723914 小时前
Docker安装(Windows版)
windows·docker·容器
2501_9404140815 小时前
搞了一次平台工程,我把本地的 Docker Desktop 彻底卸了
运维·docker·容器
工具罗某人16 小时前
docker快速部署kafka
java·nginx·docker
0__O17 小时前
Docker 浅谈
docker