rightctrl/mariadb本镜像基于CentOS7构建,提供支持Galera集群的MariaDB数据库服务。它基于Stephen Tweedie的MariaDB Dockerfile优化,适用于需要高可用性和集群功能的数据库部署场景。
检查Docker版本:
bashdocker version
构建镜像(如需自定义构建):
bashdocker build --rm --tag <yourname>/mariadb55 .
查看构建的镜像:
bashdocker images
bashdocker run --name=mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<password> <yourname>/mariadb
创建数据卷容器(仅用于数据存储,不运行):
bashdocker run --name=mariadb-data -v /var/lib/mysql <yourname>/mariadb55 true
启动MariaDB容器(挂载数据卷):
bashdocker run --name=mariadb -d -p 3306:3306 --volumes-from=mariadb-data -e MYSQL_ROOT_PASSWORD=<password> <yourname>/mariadb55
创建docker-compose.yml文件:
yamlversion: '2' services: mariadb: image: rightctrl/mariadb:10.1 # 或自定义镜像 <yourname>/mariadb55 restart: always # command: mysqld --innodb-buffer-pool-size=20M # 可选:自定义启动命令 # volumes: # - "./mariadb:/var/lib/mysql:rw" # 本地目录挂载(替代数据卷容器) # - "./conf:/etc/mysql" # 配置文件挂载 environment: # - "MYSQL_DATABASE=my_db_name" # 可选:创建初始数据库 # - "MYSQL_USER=my_db_user" # 可选:创建数据库用户 # - "MYSQL_PASSWORD=my_db_user_passwd" # 可选:用户密码 - "MYSQL_ROOT_PASSWORD=***" # 必须:root用户密码 - "WSREP_CLUSTER_ADDRESS=gcomm://192.168.11.253,192.168.11.7,192.168.11.26" # Galera集群地址 # - "WSREP_PROVIDER_OPTIONS=ist.recv_addr=192.168.11.253" # 可选:Galera提供器选项 - "WSREP_NODE_NAME=db1" # 节点名称 - "WSREP_NODE_ADDRESS=192.168.11.253" # 节点IP地址 # - "WSREP_SST_AUTH" # 可选:SST认证信息 - "WSREP_SST_METHOD=rsync" # SST同步方法 ports: - "3306:3306" # MySQL端口 - "4567:4567" # Galera复制端口 - "4568:4568" # IST端口 - "4444:4444" # SST端口 mem_limit: 3g # 内存限制 cpuset: 0,1 # CPU核心分配
启动集群:
bashdocker-compose up -d
| 环境变量 | 描述 | 是否必须 |
|---|---|---|
| MYSQL_ROOT_PASSWORD | MariaDB root用户密码 | 是 |
| MYSQL_DATABASE | 初始创建的数据库名称 | 否 |
| MYSQL_USER | 初始创建的数据库用户 | 否 |
| MYSQL_PASSWORD | 初始数据库用户的密码 | 否(若指定MYSQL_USER则为是) |
| MYSQL_CHARSET | 数据库字符集 | 否 |
| MYSQL_COLLATION | 数据库排序规则 | 否 |
| WSREP_CLUSTER_ADDRESS | Galera集群地址列表 | 集群模式下是 |
| WSREP_NODE_NAME | 集群节点名称 | 集群模式下是 |
| WSREP_NODE_ADDRESS | 集群节点IP地址 | 集群模式下是 |
| WSREP_SST_METHOD | SST同步方法(如rsync) | 集群模式下是 |
bashmysqladmin --protocol=tcp -u root -p<password> password <new_password>
bashmysql --protocol=tcp -u root -p<new_password>
sqlCREATE TABLE test ( name VARCHAR(10), owner VARCHAR(10), species VARCHAR(10), birth DATE, death DATE );

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务