工作中常见软件的Docker化

一、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

猜你喜欢

转载自blog.csdn.net/yu757371316/article/details/80886610