Docker与常见的数据库结合使用
MYSQL使用
1:下载镜像
docker pull mysql:5.7
2:指定宿主机数据卷启动
docker run --name mysql -p 12345:3306 -v /home/dev/mysqldata:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=123321qq -d mysql:5.7
这里指定了使用自己的mysql数据文件
3:使用自定义配置文件启动,在mysqlconf下放着my.cnf文件:
docker run --name mysql -p 12345:3306 -v /home/dev/mysqldata:/var/lib/mysql -v /home/dev/mysqlconf:/etc/mysql/conf.d --privileged=true -e MYSQL_ROOT_PASSWORD=123321qq -d mysql:5.7
4:使用自定义日志目录
docker run --name mysql -p 12345:3306 -v /home/dev/mysqldata:/var/lib/mysql -v /home/dev/mysqllogs:/var/log/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=123321qq -d mysql:5.7
如果日志开启不成功,可能是因为mysql用户没有对日志文件夹的操作权限,进入到容器里面,设置一下,示例如下:
chown -R mysql:mysql /var/log/mysql
5:数据表备份,在宿主机上执行
docker exec 容器id sh -c 'exec mysqldump --all-databases -uroot -p"123321qq"' > /home/all-databases.sql
REDIS使用
1.下载镜像
docker pull redis
2.启动容器,默认暴露6379端口
docker run --name myredis -d redis
3.如果想使用自己的配置文件启动redis,一种方法是在其基础上写一个dockerfile,例如:
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
另外一种方式是在启动命令中修改配置,如:
docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf
4.数据默认存储在VOLUME /data目录下,使用-v来指定挂载,如:
docker run --name myreis -d -p 6379:6379 -v /redisdocker/data:/data -v /redisconf/redis.conf:/usr/local/etc/redis/redis.conf --privileged=true redis redis-server /usr/local/etc/redis/redis.conf
注意:自己写的conf文件里面,不要配置bind的ip,也不要daemonize的配置,直接注释掉
5.aof的持久化方式
如果需要开启aof的持久化方式默认是rdb的,可以在配置文件里面设置,也可通过命令行指定:
docker run --name some-redis -d redis redis-server --appendonly yes
6.如果应用需要连接redis:
docker run --name some-app --link some-redis:redis -d application-that-uses-redis
ElasticSearch使用
1.下载镜像
docker pull elasticsearch:6.4.1
2.启动过后,在里面安装上ik和head,然后构建自己的镜像:
具体安装过程请查看 [ELK简明指南系统—Elasticsearch及常用插件安装]一文
docker run -d -v /es-6.4.1/data:/usr/share/elasticsearch/data -v /es-6.4.1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /es-6.4.1/config/logging.yml:/usr/share/elasticsearch/config/logging.yml -v /es-6.4.1/config/scripts:/usr/share/elasticsearch/config/scripts --privileged=true -p 9200:9200 -p 9300:9300 elasticsearch:6.4.1
docker commit -m="add head and ik" -a="qiuxm" 容器id qiuxmes:6.4.1
3.然后就可以使用自己的镜像了
注意在使用docker里面的es的时候,要把client.transport.sniff设置为false