docker一键部署运行各个开发应用

docker安装部署各开发应用大全

  • 前言
  • 配置静态ip并ping通外网
    • 单网卡配置
    • 添加网卡并配置
  • docker安装教程
  • docker命令
  • docker安装部署Elastic Search集群
  • docker安装部署zookeeper集群
  • docker安装rabbitmq
  • elk安装
    • docker安装logstash
    • kibana

前言

学习分布式和微服务,整么能不会docker呢。一键安装部署es,zk,mysql等,简直爱上了它。下面是我在虚拟机上一步步成功安装的过程。和大家分享下。
【备注:我是完全关闭了虚拟机的防火墙。如果只想开放部分端口供外界访问。可使用如下命令:
firewall-cmd --add-port=9300/tcp】

yum –y install wget

配置静态ip并ping通外网

单网卡配置

vmware下Linux虚拟机静态IP无法上网问题解决思路
docker一键部署运行各个开发应用_第1张图片
配置一张网卡就可以了。但如果需要两张网卡:一张访问外网,一张访问内网。则可参照文章
vmware下Linux虚拟机静态IP无法上网问题解决思路

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"

BOOTPROTO="static"

DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="c2c4547f-2dac-4ae4-98f6-8493cb42a713"
DEVICE="enp0s3"

ONBOOT="yes"

IPADDR=192.168.0.204
GATEWAY=192.168.0.1
NETMASK=255.255.255.0
DSN1=114.114.114.114

需要注意这里的网关GATEWAY:要和下图查到的一致
docker一键部署运行各个开发应用_第2张图片
DSN1可以和上图的一致,也可以使用通用的114.114.114.114

  • 然后配置域名解析
    vim /etc/resolv.conf
  • 里面的内容如下:【nameserver的值要和DSN1的值保持一致】
    nameserver 114.114.114.114

添加网卡并配置

参考:
通过这样就能添加网卡了
docker一键部署运行各个开发应用_第3张图片
docker一键部署运行各个开发应用_第4张图片
其实对于enp0s8不需要你再做任何配置,它默认是dhcp型

但如果要自己配置该新增的网卡的信息,可参照如下:
docker一键部署运行各个开发应用_第5张图片
使用如下命令记住网卡的UUID

nmcli con show

在这里插入图片描述

  • 复制一份网卡信息并改名
    cp /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s8
    更改配置如下:
    docker一键部署运行各个开发应用_第6张图片
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"

BOOTPROTO="dhcp"

DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"

NAME="enp0s8"
UUID="d17e33d2-4379-3719-9ade-bca016509211"
DEVICE="enp0s8"

ONBOOT="yes"

# IPADDR=192.168.0.222
# GATEWAY=192.168.0.1
# NETMASK=255.255.255.0
# DSN1=114.114.114.114

HWADDR=08:00:27:00:29:7f

我把BOOTPROTO=“static”,还配了IPADDR,GATEWAY,但是这样的双网卡就能连外网,但是ping不通baidu.com,所以后面还是改成了原来的配置【双网卡可能一张是static,一张是dhcp吧,两张都static,域名解析就会失败】

查看路由和网关
route -n

重启网络的几种命令
/etc/init.d/network restart
service network restart

docker安装教程

refer:菜鸟教程

docker更换境内源,提升速度
vi /etc/docker/daemon.json

添加如下内容
{
“registry-mirrors”: [“https://registry.docker-cn.com”]
}

docker命令

可以到此去查看docker仓库里面的各镜像的版本:

https://hub.docker.com/

启动docker
systemctl start docker

或者

systemctl daemon-reload
systemctl restart docker.service

  • docker搜索镜像
    docker search 镜像名
  • docker下载指定版本的镜像
    docker pull logstash:6.8.7
  • docker换源[没有以下文件就创建一个]
  1. 编辑
    vim /etc/docker/daemon.json
  2. 里面的内容如下:
    {
    “registry-mirrors”: [“https://9cpn8tt6.mirror.aliyuncs.com”]
    }
  3. 然后重启docker
    sudo systemctl daemon-reload
    sudo systemctl restart docker

查看镜像
docker images -a
删除镜像
docker rmi 容器id

查看容器
docker ps -a
移除容器
docker rm 容器名

启动容器
docker start 容器名
首次启动容器:
docker run -d --name 要命名的容器名 已存在的镜像名
查看容器启动日志
docker logs -f -t --tail 100【显示行数】 es【容器名】

docker安装部署Elastic Search集群

启动es报错—必看
docker一键部署运行各个开发应用_第7张图片

详情参考/遇到问题:请参考:docker简易搭建ElasticSearch集群
es配置文件详解

单个es时的配置文件如下:

cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 39.107.247.46
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true

单个启动命令

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /opt/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/ES/data1:/usr/share/elasticsearch/data --name es elasticsearch:5.6.8

cd /opt
mkdir -p ES/config
cd ES/
mkdir data1
mkdir data2
mkdir data3
chmod 777 data1 data2 data3
cd /opt/ES/config
vim es1.yml
vim es2.yml
vim es3.yml

es1.yml配置文件如下:

cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.0.104
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.0.104:9300","192.168.0.104:9301","192.168.0.104:9302"]
discovery.zen.minimum_master_nodes: 2

es2.yml配置文件如下:

cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.0.104
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.0.104:9300","192.168.0.104:9301","192.168.0.104:9302"]
discovery.zen.minimum_master_nodes: 2

es3.yml配置文件如下:

cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.0.104
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.0.104:9300","192.168.0.104:9301","192.168.0.104:9302"]
discovery.zen.minimum_master_nodes: 2
vim /etc/sysctl.conf
sysctl -p

sysctl.conf文件如下

vm.max_map_count=655360
fs.file-max=655360
vm.max_map_count=262144

docker安装es镜像

docker pull elasticsearch:5.6.8

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /opt/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/ES/data1:/usr/share/elasticsearch/data --name ES01 elasticsearch:5.6.8
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /opt/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/ES/data2:/usr/share/elasticsearch/data --name ES02 elasticsearch:5.6.8
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v /opt/ES/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/ES/data3:/usr/share/elasticsearch/data --name ES03 elasticsearch:5.6.8

然后浏览器运行测试

http://192.168.0.104:9200/_cat/nodes?pretty
docker一键部署运行各个开发应用_第8张图片

安装es可视化管理工具

#docker pull mobz/elasticsearch-head:5

#docker run -d -p 9100:9100 --name es-manager  mobz/elasticsearch-head:5


docker pull kibana:5.6.8
docker run --name kibana -e ELASTICSEARCH_URL=http://39.107.247.46:9200 -p 5601:5601 -d kibana:5.6.8

浏览器访问http://192.168.0.104:9100/

docker一键部署运行各个开发应用_第9张图片
docker一键部署运行各个开发应用_第10张图片

[启动es报错---必看](https://www.cnblogs.com/duanxuan/p/6473005.html)  失败日志:docker logs -f -t es

1. 先创建 /opt/es/config  和  /opt/es/data1  ,然后   chmod 777 /opt/es/data1
还需创建/opt/es/config/es1.yml,其内容如下:

cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 127.0.0.1
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true

2. 修改内存
vi /etc/sysctl.conf 
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
然后,重新启动elasticsearch,即可启动成功。
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /opt/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/es/data1:/usr/share/elasticsearch/data --name es elasticsearch:6.8.7
  
查看地址:http://192.168.0.101:9200/


3. 安装ik
docker exec -it es /bin/bash
mkdir /usr/share/elasticsearch/plugins/ik
exit

下载安装包:网址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.7/elasticsearch-analysis-ik-6.8.7.zip
执行命令: docker cp /opt/elasticsearch-analysis-ik-6.8.7.zip es:/usr/share/elasticsearch/plugins/ik/

docker exec -it es /bin/bash
cd /usr/share/elasticsearch/plugins/ik
unzip elasticsearch-analysis-ik-6.8.7.zip
rm -rf elasticsearch-analysis-ik-6.8.7.zip
exit
docker restart es

测试:
 GET _analyze
{
  "analyzer": "ik_smart", 
  "text": ["山东山西"]
}


5.安装kibana
docker pull kibana:6.8.7

docker run --name kibana -e ELASTICSEARCH_URL=http://192.168.0.102:9200 -p 5601:5601 -d kibana:6.8.7
查看地址:  http://192.168.0.101:5601/

当我用docker安装ik5.6.8时出现问题
NoSuchFileException: /usr/share/elasticsearch/plugins/ik/plugin-descriptor.properties
我按照网上的下载了ik5.6.8的zip文件,拷贝并解压到了 /usr/share/elasticsearch/plugins/ik目录下
最终结果是plugin-descriptor.properties位于/usr/share/elasticsearch/plugins/ik/elastic/目录下
运行docker报文件找不到,包也找不到。原因是5.6.8的配置文件,jar包都要位于ik下,高版本的ik解压时没有elastic,解决办法就是一个一个复制过去
docker cp plugin-descriptor.properties es:/usr/share/elasticsearch/plugins/ik/
在这里插入图片描述

docker安装部署zookeeper集群

这是先没有用docker,而是用了zookeeper的jar包

./zkServer.sh start …/conf/zoo_sample.cfg
./zkCli.sh -server localhost:2222

docker安装rabbitmq

docker pull rabbitmq:management
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management

用户名,密码默认是:guest/guest

管理页面的访问地址:

http://39.107.247.46:15672/#/

elk安装

docker安装logstash

mkdir /mydata/logstash
vim logstash.conf
输入内容如下:

input {
    tcp {
        port => 4560
        codec => json_lines
    }
}
output{
  elasticsearch { 
        hosts => ["39.107.247.46:9200"]
        index => "applog"
        }
  stdout { codec => rubydebug }
}
  • docker pull logstash
  • docker run -d -p 4560:4560 -v /mydata/logstash/logstash.conf:/etc/logstash.conf --name logstash logstash:latest logstash -f /etc/logstash.conf

docker run -d logstash:latest 后台运行镜像,去掉-d,就是前台运行镜像
-p A:B 把容器内部的B端口暴露成A端口供外界访问
-v A.conf:B.conf把外部的A.conf挂载到容器内部的B.conf上
–link elasticsearch:elasticsearch docker外部的容器连接到内部容器【不要这个output里的es必须要和外面的es容器的名字一样】
–name logstash 容器名叫啥
logstash -f /etc/logstash.conf 使用logstash的-f强制使用/etc/logstash.conf文件

logback-spring.xml里的配置

 <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>39.107.247.46:4560destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
    appender>

kibana

docker pull kibana:5.6.11

docker run --name kibana -e ELASTICSEARCH_URL=http://39.107.247.46:9200 -p 5601:5601 -d kibana:5.6.11

你可能感兴趣的:(分布式)