Docker部署应用集群
一、Docker部署应用
1.1 使用Docker部署应用必要性
- 有利于快速实现应用部署
- 有利于快速实现应用恢复
1.2 使用Docker部署应用参考资料

二、使用Docker容器实现Nginx部署
2.1 获取参考资料



2.2 运行Nginx应用容器
不在docker host暴露端口
1 | # docker run -d --name nginx-server -v /opt/nginx-server:/usr/share/nginx/html:ro nginx |
1 | # docker ps |
1 | # docker inspect 664 | grep IPAddress |
1 | # curl http://172.17.0.3 |
1 | # ls /opt |
1 | # curl http://172.17.0.3 |
2.3 运行Nginx应用容器
在docker host暴露80端口
1 | # docker run -d -p 80:80 --name nginx-server-port -v /opt/nginx-server-port:/usr/share/nginx/html:ro nginx |
1 | # docker ps |
1 | # ls /opt |
1 | # echo "nginx is running" > /opt/nginx-server-port/index.html |
在宿主机上访问

1 | # docker top nginx-server-port |
2.4 运行Nginx应用容器
挂载配置文件,需要创建一个nginx容器,把配置文件复制出来修改后使用。
1 | # docker cp nginxwebcontainername:/etc/nginx/nginx.conf /opt/nginxcon/ |
1 | # ls /opt/nginxcon/nginx.conf |
1 | # docker run -d \ |
1 | # docker top nginx-server-conf |
三、使用Docker容器实现Tomcat部署
3.1 获取参考资料



3.2 运行tomcat应用容器
3.2.1 不暴露端口运行
1 | # docker run -d --rm tomcat:9.0 |
1 | # docker ps |
3.2.2 暴露端口运行
1 | # docker run -d -p 8080:8080 --rm tomcat:9.0 |
1 | # docker ps |
在宿主机访问

1 | # docker exec 2fc ls /usr/local/tomcat/webapps |
3.2.3 暴露端口及添加网站文件
1 | # docker run -d -p 8081:8080 -v /opt/tomcat-server:/usr/local/tomcat/webapps/ROOT tomcat:9.0 |
1 | # docker ps |
1 | # echo "tomcat running" > /opt/tomcat-server/index.html |
在宿主机访问

四、使用Docker容器实现MySQL部署
4.1 单节点MySQL部署



1 | # docker run -p 3306:3306 \ |
1 | # docker ps |
1 | 通过容器中客户端访问 |
1 | 在docker host上访问 |
4.2 MySQL主从复制集群部署
4.2.1 MySQL主节点部署
1 | # docker run -p 3306:3306 \ |
1 | # docker ps |
4.2.2 MySQL主节点配置
1 | # vim /opt/mysql-master/conf/my.cnf |
4.2.3 MySQL从节点部署
1 | # docker run -p 3307:3306 \ |
1 | # docker ps |
4.2.4 MySQL从节点配置
1 | # vim /opt/mysql-slave/conf/my.cnf |
4.2.5 master节点配置
1 | # mysql -h 192.168.255.157 -uroot -proot -P 3306 |
1 | 授权 |
1 | 重启容器,使用配置生效 |
1 | 查看状态 |
4.2.6 slave节点配置
1 | # docker restart mysql-slave |
1 | # mysql -h 192.168.255.157 -uroot -proot -P 3307 |
1 | MySQL [(none)]> change master to master_host='mysql-master', master_user='backup', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=154, master_port=3306; |
1 | MySQL [(none)]> start slave; |
1 | MySQL [(none)]> show slave status\G |
4.2.7 验证MySQL集群可用性
1 | 在MySQL Master节点添加kubelixiang_test数据库 |
1 | 在MySQL Slave节点查看同步情况 |
五、使用Docker容器实现Oracle部署
5.1 获取参考资料


5.2 运行oracle容器
1 | # docker pull oracleinanutshell/oracle-xe-11g |
1 | # docker run -h oracle --name oracle -d -p 49160:22 -p 49161:1521 -p 49162:8080 oracleinanutshell/oracle-xe-11g |
1 | # docker ps |
1 | 说明: |
1 | oracle数据库连接信息 |
5.3 下载客户端连接工具
下载链接地址:https://www.oracle.com/tools/downloads/sqldev-downloads.html










六、使用Docker容器实现ElasticSearch+Kibana部署
6.1 获取参考资料
6.1.1 ES部署参考资料




6.1.2 Kibana部署参考资料




6.2 ES部署
1 | # docker pull elasticsearch:7.17.0 |
1 | # mkdir -p /opt/es/config |
1 | # echo "http.host: 0.0.0.0" >> /opt/es/config/elasticsearch.yml |
1 | # chmod -R 777 /opt/es/ |
1 | # docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ |
1 | # docker ps |

6.3 Kibana部署
1 | # docker pull kibana:7.17.0 |
1 | # docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.255.157:9200 -p 5601:5601 \ |
1 | # docker ps |

七、使用Docker容器实现Redis部署
7.1 获取参考资料




7.2 运行Redis容器
1 | # mkdir -p /opt/redis/conf |
1 | # touch /opt/redis/conf/redis.conf |
1 | # docker run -p 6379:6379 --name redis -v /opt/redis/data:/data \ |
1 | # docker ps |
7.3 验证
1 | # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo |
1 | # yum -y install redis |
1 | # redis-cli -h 192.168.255.157 -p 6379 |
7.4 Redis集群
安装redis-cluster;3主3从方式,从为了同步备份,主进行slot数据分片
1 | 编辑运行多个redis容器脚本文件 |
1 | 执行脚本 |
1 | 查看已运行容器 |
1 | 登录redis容器 |
1 | 创建redis-cluster |
1 | 输出: |
八、使用Docker容器实现RabbitMQ部署
8.1 获取参考资料




8.2 部署RabbitMQ
部署带管理控制台的RabbitMQ
1 | # docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 -v /opt/rabbitmq:/var/lib/rabbitmq rabbitmq:management |
1 | # docker ps |
1 | 端口说明: |


