侧边栏壁纸
博主头像
包包博主等级

talk is cheap,show me the code

  • 累计撰写 25 篇文章
  • 累计创建 59 个标签
  • 累计收到 55 条评论

Docker安装常用服务

包包
2021-06-16 / 0 评论 / 0 点赞 / 1,277 阅读 / 4,025 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

用Docker安装常用的中间件服务非常方便,本文记录了如何用Docker安装常用的一些中间件服务

MySQL5.7

下载MySQL5.7镜像

docker pull mysql:5.7

启动MySQL容器实例

docker run -p 3306:3306 --name mysql5.7 \
-v mysql.conf:/etc/mysql \          # 映射容器与宿主机的mysql配置目录
-v mysql.log:/var/log/mysql \       # 映射容器与宿主机的mysql日志目录
-v mysql.data:/var/lib/mysql \      # 映射容器与宿主机的mysql数据目录
-e MYSQL_ROOT_PASSWORD=root \
-e TZ="Asia/Shanghai"  # 指定容器时区,不指定的话mysql的时间函数执行结果会不正确
-d mysql:5.7

命令说明:

  • -p 3306:3306:将主机的3306端口映射到docker容器的3306端口
  • --name mysql5.7:运行的容器的名字
  • -v mysql.conf:/etc/mysql:将MySQL容器的/etc/mysql配置文件目录映射到宿主机的数据卷mysql.conf,同步配置文件
  • -v mysql.log:/var/log/mysql:将MySQL容器的/var/log/mysql日志文件目录映射到宿主机的数据卷mysql.log,同步日志文件
  • -v mysql.data:/var/lib/mysql:将MySQL容器的/var/lib/mysql数据文件目录映射到宿主机的数据卷mysql.data,同步数据库数据
  • -e MYSQL_ROOT_PASSWORD=root:配置环境变量,初始化root用户的密码。必须指定,否则无法启动容器
  • -e TZ="Asia/Shanghai":配置环境变量,指定容器时区,不指定的话MySQL的时间函数执行结果会不正确
  • -d mysql:5.7 : 后台程序运行MySQL

然后查看宿主机对应的MySQL配置文件数据卷的具体路径

docker volume inspect mysql.conf

进入该目录修改MySQL配置文件

cd /var/lib/docker/volumes/mysql.conf/_data
vim mysql.conf.d/mysqld.cnf

添加如下编码相关配置,将编码统一为UTF-8

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection=utf8_general_ci'
init_connect='SET NAMES utf8'
character_set_server=utf8
collation_server=utf8_general_ci

重启容器,由于主机的配置文件已经同步到容器中,所以新的配置就会生效

docker restart mysql5.7

如果需要,可以设置每次docker启动时自动启动MySQL

docker update mysql5.7 --restart=always

Redis5

下载redis镜像

docker pull redis:5

因为启动Redis容器和其他容器有点区别,Redis启动时是没有默认配置文件的,我们需要在启动时设置一条额外的启动命令,让Redis加载指定的配置文件启动,所以我们要提前在宿主机创建好这个配置文件并映射到容器中。首先在宿主机创建redis配置文件对应的数据卷,然后创建1个空的redis配置文件

docker volume create redis.conf
touch /var/lib/docker/volumes/redis.conf/_data/redis.conf

在配置文件中添加常用的配置

vim /var/lib/docker/volumes/redis.conf/_data/redis.conf
# 端口
port 6379
# RDB相关配置
save 900 1
save 300 10
save 60 10000
rdbcompression yes
# 数据目录
dir /data
# AOF相关配置
appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 密码
requirepass baobao

创建容器实例并启动

docker run -p 6379:6379 -d --name redis5 \
-v redis.data:/data \       # 映射容器的redis数据目录到宿主机的数据卷             
-v redis.conf:/etc/redis \ # 映射容器的redis配置目录到宿主机的数据卷
-e TZ="Asia/Shanghai" \  # 指定容器时区
redis:5 redis-server /etc/redis/redis.conf  # 设置启动时的额外命令,加载容器的/etc/redis/redis.conf配置启动

注意:这里在启动容器时需要添加额外的启动命令redis-server /etc/redis/redis.conf以我们指定的配置文件启动

使用客户端连接redis,测试存取数据

设置docker启动时自动启动redis

docker update redis5 --restart=always

RabbitMQ

使用docker下载带有图形化管理页面的rabbitMQ

docker pull rabbitmq:3.7-management

运行容器,注意要配置3个端口映射:

  • 5672:与rabbitmq通信的端口号,建立连接、发送消息等都是用这个端口
  • 15672:访问rabbitmq控制台图形界面的端口
  • 25672:rabbitmq集群通信的端口号
docker run -d --name rabbitmq3.7 -v rabbitmq.conf:/etc/rabbitmq -e TZ="Asia/Shanghai" -p 5672:5672 -p 25672:25672 -p 15672:15672 rabbitmq:3.7-management

其中/etc/rabbitmq为rabbitmq配置文件所在目录

登陆图形化管理页面,账号密码都是guest

ElasticSearch7

首先下载ES和kibana的镜像,kibana可以看做是可视化操作ES的工具

docker pull elasticsearch:7.8.0
docker pull kibana:7.8.0

在运行ES之前,要先看一下宿主机内存够不够,ES比较占用内存,默认最大占用内存1G,建议剩余1.5G以上内存

free -h

创建并运行ES容器

docker run -d --name elasticsearch7.8 -p 9200:9200 -p 9300:9300 \  # 指定端口,9200是访问端口,9300是节点通信端口
-e "discovery.type=single-node" \   # 单节点模式
-e TZ="Asia/Shanghai"  # 指定时区
-v elasticsearch.conf:/usr/share/elasticsearch/config \ # 映射配置目录
-v elasticsearch.data:/usr/share/elasticsearch/data \ # 映射数据目录
-v elasticsearch.plugins:/usr/share/elasticsearch/plugins \ # 映射插件目录
elasticsearch:7.8.0

其中容器内相关的目录介绍如下:

  • /usr/share/elasticsearch/config:ES配置文件目录
  • /usr/share/elasticsearch/data:ES数据目录
  • /usr/share/elasticsearch/plugins:ES插件目录

运行容器成功后,可以在浏览器测试访问

然后我们再创建并运行kibana容器

docker run -d --name kibana7.8 -e TZ="Asia/Shanghai" -p 5601:5601 -v kibana.conf:/usr/share/kibana/config kibana:7.8.0

这里/usr/share/kibana/config是kibana的配置文件目录

启动后修改kibana的配置文件,指定要连接的ES的地址

cd /var/lib/docker/volumes/kibana.conf/_data
vim kibana.yml

然后重启kibana容器

docker restart kibana7.8

测试kibana

Nginx

首先拉取镜像

docker pull nginx:1.16.1

启动nginx容器

docker run -d -p 80:80 -p 443:443 --name nginx1.16 -e TZ="Asia/Shanghai" -v nginx.conf:/etc/nginx -v nginx.html:/usr/share/nginx/html -v nginx.log:/var/log/nginx nginx:1.16.1

其中映射的目录介绍如下:

  • /etc/nginx:nginx配置文件目录
  • /usr/share/nginx/html:nginx静态资源文件目录
  • /var/log/nginx:nginx日志文件目录

docker会自动在宿主机上创建数据卷nginx.confnginx.htmlnginx.log,并将容器中对应映射目录原有的所有文件拷贝到数据卷中

最后访问宿主机ip+80端口即可看到nginx欢迎页面

0

评论区