一、MySQL的Docker化
1、创建本地映射目录
mkdir -p ~/mysql/data ~/mysql/logs /etc/mysql/conf
data目录将映射为mysql容器配置的数据文件存放路径
logs目录将映射为mysql容器的日志目录
conf目录里的配置文件将映射为mysql容器的配置文件
进入创建的mysql目录,创建Dockerfile
2、拉取MySQL镜像
docker search mysql
docker pull mysql
3、设置配置文件
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
#default-character-set=utf8
#loose-default-character-set=utf8
#避免MySQL的外部锁定,减少出错几率增强稳定性。
socket=/var/run/mysqld/mysqld.sock
[mysql]
local-infile=1
loose-local-infile=1
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file=/var/run/mysqld/mysqld.pid
port = 3017
server_id = 1
character_set_server=utf8
init_connect='SET NAMES utf8'
#skip-grant-tables
#每次重启MySQL之后EVENT自动启动
event_scheduler=1
#主从复制相关变量
gtid-mode = on #打开基于gitd复制的功能
enforce-gtid-consistency = on
skip_slave_start = 1 #数据库起来后不能直接开启复制
log-slave-updates = ON
#plugin-load=semisync_master.so
#rpl_semi_sync_master_enabled=1 #打开半同步复制
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
#default-character-set=utf8
#loose-default-character-set=utf8
#避免MySQL的外部锁定,减少出错几率增强稳定性。
socket=/var/run/mysqld/mysqld.sock
[mysql]
local-infile=1
loose-local-infile=1
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file=/var/run/mysqld/mysqld.pid
port = 3017
server_id = 1
character_set_server=utf8
init_connect='SET NAMES utf8'
#skip-grant-tables
#每次重启MySQL之后EVENT自动启动
event_scheduler=1
#主从复制相关变量
gtid-mode = on #打开基于gitd复制的功能
enforce-gtid-consistency = on
skip_slave_start = 1 #数据库起来后不能直接开启复制
log-slave-updates = ON
#plugin-load=semisync_master.so
#rpl_semi_sync_master_enabled=1 #打开半同步复制
#rpl_semi_sync_master_timeout=10000 #此单位是毫秒
lower_case_table_names=1
#避免MySQL的外部锁定,减少出错几率增强稳定性。
socket=/var/run/mysqld/mysqld.sock
skip-external-locking
skip-name-resolve
skip-show-database
innodb_buffer_pool_size=256M #InnoDB引擎缓冲区
query_cache_size=16M #查询缓存
tmp_table_size=64M #临时表大小
key_buffer_size=32M
max_allowed_packet = 64M
max-connections=1800
max_user_connections=0 #不限制单用户的最大连接数,其最大连接值可以等于max_connections值
###########Log Setting#############
log_bin=/usr/local/mysql/log/master-bin.log
binlog_format = ROW
binlog_row_image=minimal
max_binlog_size = 150M
log_error=/usr/local/mysql/log/error.log
long_query_time=0.1 #100毫秒
#是否记录为使用索引的SQL
log_queries_not_using_indexes = ON
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/log/slowquery.log
general_log=ON
general_log_file=/usr/local/mysql/log/general.log
expire_logs_days = 10
#binlog-do-db=db1
#binlog-do-db=db3
binlog-ignore-db=mysql
innodb_flush_log_at_trx_commit = 2
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_IN_DATE
4、启动镜像
docker run
-p 3306:3306
--name mysql
-v /etc/mysql/my.cnf:/etc/mysql/my.cnf
-v ~/mysql/logs:/var/log/mysql
-v ~/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
-d mysql:5.7.12
二、MongoDB的Docker化
1、创建本地映射目录
mkdir -p ~/mongodb/data ~/mongodb/logs
touch /etc/mongod.conf
2、设置配置文件
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
directoryPerDB: true
# engine:
# mmapv1:
# wiredTiger:
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongo.log
net:
port: 27017
bindIp: 0.0.0.0
processManagement:
#fork: true
#pidFilePath: /var/lib/mongodb/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: enabled
operationProfiling:
mode: all
slowOpThresholdMs: 100
slowOpSampleRate: 1.0
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
3、拉取镜像
docker pull mongo:3.6.5
4、启动容器
mongdb启动时,如果需要自定义日志文件的话(如上面的/var/log/mongodb/mongo.log),那么需要自己进入容器创建这个文件,否则数据库启动时会报错
1、随意启动容器
docker run -p 27017:27017 -d mongo:3.6.5
2、进入容器,按照自己配置文件修改
修改日志目录的写权限: chown a+rw /var/log/mongodb
修改数据目录的写权限: chown a+rw /var/lib/mongodb
创建日志文件: touch /var/log/mongodb/mongo.log
创建配置文件: touch /etc/mongod.conf
3、提交修改
docker commit container_id mymongo/mongo:3.6.5
4、删除旧的容器,重新启动自己修改后的容器
docker run
--name mongo
-p 27017:27017
-v /etc/mongo/mongodb.conf:/etc/mongod.conf
-v ~/mongodb/log:/var/log/mongodb
-v ~/mongodb/data:/var/lib/mongodb
-d mongo:3.6.5
--config /etc/mongod.conf
三、Redis的Docker化
1、创建本地映射目录
mkdir -p /usr/local/redis/data /usr/local/redis/log
2、创建本地日志文件
touch /usr/local/redis/log/redis.log
3、如果打开了aof,则创建文件
touch /usr/local/redis/data/appendonly.aof
4、创建配置文件,修改参数
pidfile /var/run/redis_6379.pid pid文件
logfile /usr/local/redis/log/redis.log 日志文件
dir /usr/local/redis/data/ 数据目录
requirepass bfdbfd5435 设置密码
appendonly yes 打开了aof
5、启动服务器
docker run --name redis -p 6379:6379
-v /etc/redis.conf:/usr/local/etc/redis/redis.conf
-v /usr/local/redis/data:/usr/local/redis/data
-v /usr/local/redis/log:/usr/local/redis/log
-d redis:4.0 redis-server /usr/local/etc/redis/redis.conf
四、Zookeeper的Docker化
1、创建本地映射目录
mkdir -p /usr/local/zookeeper/data /usr/local/zookeeper/log
2、创建配置文件
touch /etc/zoo.cfg
配置属性如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/data
dataLogDir=/datalog
# the port at which the clients will connect
clientPort=2181
3、启动
docker run --name zookeeper
-p 2181:2181 -p 2888:2888 -p 3888:3888 后两个端口在选举时会用到
--restart always
-v /usr/local/zookeeper/data:/data data是zk的默认目录
-v /usr/local/zookeeper/log:/datalog datalog是zk的默认目录
-v /etc/zoo.cfg:/conf/zoo.cfg 配置文件
-d zookeeper:3.4.11 后台运行,并指定版本
五、ActiveMq的Docker化
1、拉取镜像
docker pull rmohr/activemq:5.15.3
2、启动
docker run -p 61616:61616 -p 8161:8161 rmohr/activemq
六、Emqtt的Docker化
1、官网下载文件
进入http://www.emqtt.com/docs/v2/install.html#docker找到Docker 镜像 下载,根据指示下载镜像
2、加载镜像
docker load < emqttd-docker-v2.0
3、启动
docker run -tid --name emqtt -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 -d emqttd-docker-v2.3.10:latest