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
相关推荐
一点事3 小时前
centos7:离线安装docker
运维·docker·容器
howard20056 小时前
Docker实战:创建和使用Docker私有仓库
docker·私有仓库
qq_5470261796 小时前
Docker 常用命令解析
docker·容器·eureka
qq_5470261796 小时前
Docker 详解
运维·docker·容器
先生沉默先6 小时前
Docker+Nginx+Node.js 全栈容器化部署
nginx·docker·node.js
qq_5470261796 小时前
Dockerfile 详解
docker
专家大圣6 小时前
摆脱局域网!Logseq 搭配cpolar公网访问让笔记管理更自由
linux·网络·docker·内网穿透·cpolar
小黑要上天6 小时前
8-docker run --rm选项说明
运维·docker·容器
小翰子_6 小时前
Docker 常用笔记(速查版)
笔记·docker·容器