Skip to content

Docker - overview

安装

redis

https://redis.io/docs/latest/get-started/

  1. 拉取镜像
shell
docker pull redis
  1. 挂载配置文件

https://github.com/redis/redis/获取redis的配置文件。

shell
sudo mkdir -p /data/redis/conf
sudo mkdir -p /data/redis/data
  1. 启动容器
shell
docker run -itd --name redis --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 -v /data/redis/conf:/usr/local/etc/redis -v /data/redis/data:/data  redis redis-server /usr/local/etc/redis/redis.conf

参数解析

【 --restart=always】 开机启动,失败也会一直重启;
【–log-opt max-size=100m】意味着一个容器日志大小上限是100M;
【–log-opt max-file=2】意味着一个容器有2个日志,分别是id+.json、id+1.json;
【-p 6379:6379】 将宿主机6379端口与容器内6379端口进行映射;
【-v】 将宿主机目录或文件与容器内目录或文件进行挂载映射;
【-itd】
 i:以交互模式运行容器,通常与 -t 同时使用;
 t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
 d:表示后台启动redis;
【–name】 给容器命名;
【–appendonly yes】 开启redis 持久化;
【–requirepass qwe123】 强烈建议设置密码,并且将密码设置为高强度复杂;
【redis-server /etc/redis/redis.conf】 以配置文件启动redis,加载容器内的conf文件;

老版本启动报错: ... unknown log opt 'max-file' for journald log driver 老版本的docker日志驱动程序是:journald

[修改配置文件]

shell
    vim /etc/sysconfig/docker
    #编辑
    原文:OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
    编辑后:OPTIONS='--selinux-enabled --log-driver=json-file --signature-verification=false'

[重启dokcer加载配置文件]

shell
    systemctl daemon-reload && systemctl restart docker

mysql

  1. 拉取镜像
shell
docker pull docker.m.daocloud.io/mysql:5.7
  1. 挂载配置文件
shell
#创建home目录下mysql文件夹和mysql里的conf,data,log三个文件夹
mkdir -p  /data/mysql/5.7/{conf,data,log}

my.cnf配置文件

ini
[client]
# 端口号
port=3306
 
[mysql]
# 关闭提示音
no-beep
# 配置了 MySQL 客户端的默认字符集
default-character-set=utf8mb4
 
[mysqld]
# 端口号
port=3306
# 设置数据库的默认时区为 UTC+8
default_time_zone = '+8:00'
# 数据目录
datadir=/var/lib/mysql
# 设置了 MySQL 服务器的字符集为 UTF-8
character-set-server=utf8mb4
# 设置了 MySQL 服务器的排序规则为 utf8mb4_unicode_ci,通常用于支持国际化和多语言字符的正确排序
collation-server=utf8mb4_unicode_ci
# 用于禁用客户端字符集握手,允许客户端和服务器之间的字符集设置更加灵活
skip-character-set-client-handshake
# 禁用了主机名解析,以提高连接性能
skip-name-resolve
# 默认存储引擎
default-storage-engine=INNODB
# 将 SQL 模式设置为严格
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#  最大连接数
max_connections=1024
# 表缓存
table_open_cache=2000
# 表内存
tmp_table_size=16M
# 线程缓存
thread_cache_size=10
# 设置大小写不敏感
lower_case_table_names=1
 
# myisam设置
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=8M
key_buffer_size=8M
read_buffer_size=0
read_rnd_buffer_size=0
 
# innodb设置
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=48M
innodb_thread_concurrency=33
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
# 其他设置
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000

授权文件夹读写权限

shell
chmod 777 /data/mysql/5.7
  1. 启动容器
shell
docker run \
-p 3306:3306 \
--name mysql_8.3.0 \
--privileged=true \
-v /data/mysql/8.3/log:/var/log/mysql \
-v /data/mysql/8.3/data:/var/lib/mysql \
-v /data/mysql/8.3/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d docker.m.daocloud.io/library/mysql:8.3.0
  1. 开启局域网访问
shell
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;

Released under the MIT License.