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
相关推荐
吴声子夜歌21 分钟前
Docker入门与实战——高级镜像构建
docker
坐看风云变幻1 小时前
Betaflight 开发环境搭建保姆级教程(Ubuntu / Windows+WSL / Docker 三方案 + 官方网址大全)
windows·ubuntu·docker·无人机·飞控·betaflight
零基础1231 小时前
Docker 部署实战:从入门到精通
docker·容器
Lvan的前端笔记1 小时前
docker:基于docker的前端部署方案
前端·docker·状态模式
承渊政道2 小时前
自建服务越来越多怎么管理?Docker部署Flare,搭一个自己的数字入口
运维·docker·容器·内网穿透·cpolar·nas·flare
龙腾-虎跃2 小时前
Docker 一键启动服务合集:Redis、MySQL、Kafka、MinIO、Prometheus 等(网盘转存防失效)
redis·mysql·docker·kafka·prometheus·小龙虾·miniio
芷栀夏3 小时前
极空间部署Photopea:Docker运行、网页修图与多设备使用
运维·docker·容器
JeJe同学13 小时前
Docker镜像导入、容器启动
linux·运维·docker
元Y亨H17 小时前
基于 Jenkins + Docker 的前端(Vben Admin)CI/CD 踩坑
docker·jenkins
白兰地空瓶18 小时前
项目要上线了,我连夜学完 Docker:从底层原理到容器化部署全记录
docker·全栈