compose文档:Compose specification | Docker Documentation
容器地址及文档:Docker Hub
1.docker-ce安装
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
2.可以通过国内镜像进行加速,本次使用的是阿里云镜像加速
阿里云容器加速访问网址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://0cbolbbb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.10.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
1.创建数据目录
mkdir /data/mariadb -pv
cd /data/mariadb
2.创建 docker-compose.yml文件,内容如下
cd /data/mariadb/
vi docker-compose.yml
version: '3.2'
services:
mariadb:
image: bitnami/mariadb:10.7.3
container_name: mariadb
restart: always
environment:
- MARIADB_ROOT_PASSWORD=rootIPD.xx2.19
- MARIADB_DATABASE=flyapps
- MARIADB_USER=flyuser
- MARIADB_PASSWORD=KGzKjZpWBp4R4RSa
#- ALLOW_EMPTY_PASSWORD=yes
- MARIADB_ENABLE_SLOW_QUERY=1
- MARIADB_LONG_QUERY_TIME=3
- MARIADB_SKIP_TEST_DB=yes
- MARIADB_EXTRA_FLAGS=--max-connect-errors=3000 --max_connections=30000
ports:
- 3306:3306
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/mariadb:/bitnami/mariadb/data
- ./data/logs/mariadb:/data/logs/mariadb
- ./server.cnf:/opt/bitnami/mariadb/conf/my_custom.cnf:ro
注意: mariadb环境变量设置,请参考官方文档Docker Hub
3.数据库配置文件 server.cnf
cd /data/mariadb/
vi server.cnf
内容如下:
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
# this is only for the mysqld standalone daemon
[mysqld]
binlog_cache_size = 192K
thread_stack = 384K
join_buffer_size = 4096K
query_cache_type = 1
max_heap_table_size = 1024M
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 1G
table_open_cache = 1024
sort_buffer_size = 2048K
net_buffer_length = 4K
read_buffer_size = 2048K
read_rnd_buffer_size = 1024K
myisam_sort_buffer_size = 16M
thread_cache_size = 192
query_cache_size = 256M
tmp_table_size = 1024M
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
max_connections = 30000
max_connect_errors = 1000
open_files_limit = 65535
expire_logs_days = 10
#log_queries_not_using_indexes=on
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
#character-set-server=utf8
skip_name_resolve
event_scheduler=1
#skip-grant-tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_buffer_pool_size = 1024M
#innodb_log_file_size = 128M
#innodb_log_buffer_size = 32M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
#innodb_max_dirty_pages_pct = 90
#innodb_read_io_threads = 4
#innodb_write_io_threads = 4
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# this is only for embedded server
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
#autoset_open_files_limit
#enable_slow_query_log
#audit
plugin_load_add=server_audit
server_audit_logging=on
server_audit_events=connect,query
server_audit=force_plus_permanent
server_audit_events=QUERY_DDL,QUERY_DML,CONNECT
server_audit_output_type=file
server_audit_file_rotate_now=on
server_audit_file_rotations=9
server_audit_file_rotate_size=1G
server_audit_file_path=/data/logs/mariadb
log_error=/data/logs/mariadb/mariadb.err.log
log_output=FILE
slow_query_log
long_query_time=3
slow_query_log_file=/data/logs/mariadb/mariadb-slow.log
log_queries_not_using_indexes=ON #Logging Queries That Don't Use Indexes
#server_id=2
log-bin=/data/logs/mariadb/mysql-bin
# This group is only read by MariaDB-10.5 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
需要提前创建好容器所需目录和授权
cd /data/mariadb/
mkdir -pv data/{mariadb,logs/mariadb}
chown 1001.1001 -R data/{mariadb,logs/mariadb}
# 根据需求进行启动
#docker-compose up # 前端运行启动
docker-compose up -d # 后台启动,一般执行该命令后台运行
# 停止并删除容器,因为使用数据挂载,因此不会删除数据
docker-compose down
查看容器状态
docker-compose ps
查看容器运行日志 docker-compose logs
[root@localhost mariadb]# docker-compose logs
mariadb | mariadb 00:07:58.01
mariadb | mariadb 00:07:58.01 Welcome to the Bitnami mariadb container
mariadb | mariadb 00:07:58.01 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-mariadb
mariadb | mariadb 00:07:58.02 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-mariadb/issues
mariadb | mariadb 00:07:58.02
mariadb | mariadb 00:07:58.02 INFO ==> ** Starting MariaDB setup **
mariadb | mariadb 00:07:58.04 INFO ==> Validating settings in MYSQL_*/MARIADB_* env vars
mariadb | mariadb 00:07:58.04 INFO ==> Initializing mariadb database
mariadb | mariadb 00:07:58.06 INFO ==> Updating 'my.cnf' with custom configuration
mariadb | mariadb 00:07:58.06 INFO ==> Setting user option
mariadb | mariadb 00:07:58.07 INFO ==> Setting slow_query_log option
mariadb | mariadb 00:07:58.07 INFO ==> Setting long_query_time option
mariadb | mariadb 00:07:58.08 INFO ==> Injecting custom configuration 'my_custom.cnf'
mariadb | mariadb 00:07:58.08 INFO ==> Installing database
mariadb | mariadb 00:07:59.16 INFO ==> Starting mariadb in background
mariadb | mariadb 00:08:01.18 INFO ==> Configuring authentication
mariadb | mariadb 00:08:01.26 INFO ==> Running mysql_upgrade
mariadb | find: '/docker-entrypoint-startdb.d/': No such file or directory
mariadb | mariadb 00:08:02.00 INFO ==> Stopping mariadb
mariadb | mariadb 00:08:03.02 INFO ==> ** MariaDB setup finished! **
mariadb |
mariadb | mariadb 00:08:03.05 INFO ==> ** Starting MariaDB **
mariadb | 2022-09-06 0:08:03 0 [Note] /opt/bitnami/mariadb/sbin/mysqld (server 10.7.3-MariaDB-log) starting as process 1 ...
mariadb | mariadb 00:08:31.76
mariadb | mariadb 00:08:31.76 Welcome to the Bitnami mariadb container
mariadb | mariadb 00:08:31.76 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-mariadb
mariadb | mariadb 00:08:31.76 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-mariadb/issues
mariadb | mariadb 00:08:31.76
mariadb | mariadb 00:08:31.77 INFO ==> ** Starting MariaDB setup **
mariadb | mariadb 00:08:31.79 INFO ==> Validating settings in MYSQL_*/MARIADB_* env vars
mariadb | mariadb 00:08:31.79 INFO ==> Initializing mariadb database
mariadb | mariadb 00:08:31.80 INFO ==> Updating 'my.cnf' with custom configuration
mariadb | mariadb 00:08:31.81 INFO ==> Setting user option
mariadb | mariadb 00:08:31.81 INFO ==> Setting slow_query_log option
mariadb | mariadb 00:08:31.81 INFO ==> Setting long_query_time option
mariadb | mariadb 00:08:31.82 INFO ==> Injecting custom configuration 'my_custom.cnf'
mariadb | mariadb 00:08:31.82 INFO ==> Using persisted data
mariadb | mariadb 00:08:31.84 INFO ==> Running mysql_upgrade
mariadb | mariadb 00:08:31.85 INFO ==> Starting mariadb in background
mariadb | find: '/docker-entrypoint-startdb.d/': No such file or directory
mariadb | mariadb 00:08:34.56 INFO ==> Stopping mariadb
mariadb | mariadb 00:08:35.58 INFO ==> ** MariaDB setup finished! **
mariadb |
mariadb | mariadb 00:08:35.60 INFO ==> ** Starting MariaDB **
mariadb | 2022-09-06 0:08:35 0 [Note] /opt/bitnami/mariadb/sbin/mysqld (server 10.7.3-MariaDB-log) starting as process 1 ...
查看mariadb服务日志,需要打开挂载目录进行查看
cd /data/mariadb/data/logs/mariadb
连接测试,输入配置文件内指定的用户
若有配置服务开机启动,需要设置docker服务开机启动即可
systemctl enable docker