Docker搭建环境

docker安装ES

镜像准备

1、镜像搜索

docker search elasticsearch

2、拉取镜像

docker pull elasticsearch:7.6.2
docker pull kibana:7.6.2
罗老师 2020/9/4 19:19:41
docker network create somenetwork

罗老师 2020/9/4 19:19:48
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch

创建elasticsearch容器
docker run -d -e ES_JAVA_POTS="-Xms512m -Xmx512m" --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

然后docker ps -a 查看启动成功没有,logs查看日志 等待一会 去浏览器访问一下9200

然后浏览器中输入:http://192.168.93.128:9200/

创建kibana容器
docker network create somenetwork
#维哥的做法
docker run -id --name kibana --net somenetwork -e ELASTICSEARCH_HOSTS=http://192.168.93.128:9200 -p 5601:5601 kibana:7.6.2

然后查看容器,等待一会儿刷新一下 5601去看看

然后浏览器中输入:http://192.168.93.128:5601/

Kibana在6.7以后的版本,支持了多种语言。并且自带在安装包里。修改方式如下:

修改中文

docker exec -it kibana /bin/bash  #进入容器的目录
cd config    #进入配置目录
vi kibana.yml      #进去编写yml文件
在kibana.yml配置文件中新增一行:       #
i18n.locale: "zh-CN" 

# 安装ik	

docker exec -it es /bin/bash   #进入es容器的目录

之后从github上抓取ik分词器的压缩包:

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip

#你远程安装ik的时候会提示没有那个软件,你就百度去下载一下,你可以问维维。他晓得,我告诉他了的

之后再plugins下建立ik文件夹将压缩包解压进入此文件夹:

cd plugins/
mkdir ik
cd ik    
#解释一下,我的安装包放在soft的目录下面的 ,只需要从这个目录复制过来解压即可
docker cp /soft/elasticsearch-analysis-ik-7.6.2.zip  es:/usr/share/elasticsearch/plugins/ik/   #将一个包复制到容器中
#解压
unzip elasticsearch-analysis-ik-7.6.2.zip
#   之后编辑plugin-descriptor.properties文件 
vi plugin-descriptor.properties
# 添加以下内容
elasticsearch.version=6.7.2
docker commit 打包成镜像的容器名 打包成新的镜像名:新镜像的版本  #容器打包成镜像
docker save -o 压缩包的名字.tar 被打包的镜像名  #镜像打成压缩包

Docker上安装RabbitMQ

docker search rabbit
docker pull rabbitmq:3-management
docker run -i -p 5672:5672 -p 15672:15672 --name=mymq rabbitmq:3-management

Docker上安装Nacos

docker pull nacos/nacos-server   # 拉取nacos镜像
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server  #运行容器
docker exec -it nacos bash  进入容器的目录
#访问    http://192.168.93.128:8848/nacos
MySQL连接不上
#进入mysql容器  必须进去 ,不能进入挂载目录  因为挂载目录只是给传输文件使用的 
docker exec -it c_mysql /bin/bash
mysql -u root -p
#然后输入自己的密码,最后输入更新密码语句
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'
#最后重启mysql再使用navicat连接即可成功


#但是我没有成功  ,付老师给我的命令
firewalld-cmd --zone=public --add-port=3308/tcp --permanent
#第二步,重启防火墙
systemctl restart firewalld.service
.....


# 王震做法
docker exec -it c_mysql /bin/bash
# 容器中输入下面的句子
 mysql -h localhost -u root -p
未果......

#下面这个做法来自网络  存在风险  慎用
mysql -u root -p 
#授权
GRANT ALL ON . TO ‘root’@’%’
刷新权限
flush privileges
更改加密规则
ALTER USER ‘root’@‘192.168.93.128’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER
更新root用户密码(123456是我的密码,要替换成自己的)
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘root’
七、刷新权限
flush privileges

docker安装fastdfs

1.首先需要一个基础镜像
docker pull morunchang/fastdfs
2.dockerfile

基于pull下来的镜像再file一个新镜像

执行命令:

docker build -t fastdfs . //fastdfs 为新镜像名字

FROM morunchang/fastdfs  #基于哪一个镜像,我首先要有这个镜像
MAINTAINER fastdfs      #作者名  随便写一个即可
RUN rm -rf /data/nginx/conf/nginx.conf    #删掉新镜像里的配置文件
COPY nginx.conf /data/nginx/conf/nginx.conf   #替换掉被删掉的配置文件  这个配置文件是下面的
3.docker-compose.yml

执行命令

docker-compose up

version: "3.7"
services:
  tracker:
    image: fastdfs       #基于file出来的镜像
    container_name: "tracker"          #新建容器名字
    command: sh tracker.sh
    network_mode: host
  storage:
    image: fastdfs
    container_name: "storage"           #新建容器名字
    environment: 
      - TRACKER_IP=192.168.93.128:22122      #自己Linux地址
      - GROUP_NAME=changgou  #自己定义名字,但是nginx中也要改
    command: sh storage.sh    
    network_mode: host
4.nginx.conf

这是新的配置文件

里面有两个组名:

默认为group1,你要什么组名自己进去改好,到时候上传文件就是在那个组名里

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
location /group1/M00 {
    proxy_next_upstream http_502 http_504 error timeout invalid_header;
    proxy_cache http‐cache;
    proxy_cache_valid 200 304 12h;
    proxy_cache_key $uri$is_args$args;
    proxy_pass http://fdfs_group1;
    expires 30d;
}
location /changgou/M00 {
    proxy_next_upstream http_502 http_504 error timeout invalid_header;
    proxy_cache http‐cache;
    proxy_cache_valid 200 304 12h;
    proxy_cache_key $uri$is_args$args;
    proxy_pass http://fdfs_group1;
    expires 30d;
}
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

docker 安装 lua

没有必要安装lua,因为下面安装的openresty里面集合了lua和nginx

# 下载镜像
docker pull jimho/lua
# 运行容器
docker run -it --name lua jimho/lua /bin/bash

Linux安装openresty

不推荐安装在Linux上面,推荐下面的docker安装方法

添加仓库执行命令

yum install yum‐utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

执行安装

yum install openresty

安装成功后 会在默认的目录如下:

/usr/local/openresty

默认已经安装好了nginx,在目录:/usr/local/openresty/nginx 下

修改/usr/local/openresty/nginx/conf/nginx.conf ,将配置文件使用的根设置为root,目 的就是将来要使用lua脚本的时候 ,直接可以加载在root下的lua脚本

cd /usr/local/openresty/nginx/conf/
vim nginx.conf
#user nobody; 配置文件第一行原来为这样, 现改为下面的配置 
user root root 

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2JNppHIl-1603861705674)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1599896291135.png)]

测试访问 http://192.168.93.128

Docker安装openresty

考虑是否映射的端口是80,考虑会冲突的话就用99,如下所示

docker run --name openresty -p 99:80 -p 443:443 -di  openresty/openresty

访问测试

http://192.168.93.128:99/    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H8dhRuCi-1603861705680)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1599981902627.png)]

进入容器修改文件

docker exec -it openresty /bin/bash

容器安装vi

apt-get update
apt-get -y install vim

开启Mysql的BinLog

以下添加的是鉴权方式:

[mysqld]
default_authentication_plugin = mysql_native_password
王震做法
1.开启mysql容器
docker run -it -p 3308:3306 --name=c_mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7

2.进入容器,进入mysql
docker exec -it c_mysql /bin/bash

进入sql
mysql -uroot -proot

3.查看日志 
# 如果log_bin的值为OFF是未开启,为ON是已开启。
SHOW VARIABLES LIKE '%log_bin%';

4.退出mysql 
到mysql容器中 进入mysqld.cnf文件
# 如果没有vi命令 则安装             
	apt-get update
	apt-get -y install vim
	
#安装完成后输入此指令,对该文件进行修改
vi /etc/mysql/mysql.conf.d/mysqld.cnf
	
#如果安装不上、可以选择在window上 新建	mysqld.cnf文件,写入如下配置信息
#再拖入linux中 使用移动指令:  从主机拷贝到容器 docker cp ./文件名 容器名:/对应要移动的容器中文件的位置
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
symbolic-links=0
# 开启log_bin
log-bin=mysql-bin
binlog-format=ROW
server_id=1
	
#如果可以安装上
# 在[mysqld]下面添加
# [mysqld]
log-bin=mysql-bin
binlog-format=ROW
server_id=1

5.再次进入mysql
mysql -h localhost -u root -p

6.使用root账号创建用户并授予权限
create user canal@'%' IDENTIFIED by 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

7.重启容器
docker restart c_mysql

安装Canal

王震做法
1.拉取镜像
docker pull canal/canal-server:latest


2.可以先不做,如果有问题再做。
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
systemctl restart network
systemctl restart docker


3.启动容器,进入
# 指定canal的访问地址、暴露端口和sql的暴露端口、账户、密码、
#这个容器的配置主要是为了连接要监控的数据库
#canal监听数据库的地址,端口号,并且添加MySQL的用户名和密码
docker run --name canal -e canal.instance.master.address=192.168.93.133:3307 -e canal.instance.dbUsername=root -e canal.instance.dbPassword=root -p 11111:11111 -d canal/canal-server

docker exec -it canal /bin/bash

4.进入该配置文件
vi /home/admin/canal-server/conf/canal.properties

5.添加
canal.id=2  (此处的id不能与mysql的id相同)


6.重启
docker restart canal
# 可以设置开机启动 适用于所有容器
docker update --restart=always canal
docker update --restart=always nacos

安装MongoDB

1.拉取镜像
docker pull mongo
2.run容器
docker run  \
--name mongodb_server \
-p 27017:27017  \
-v /root/mongo/configdb:/data/configdb/ \
-v /root/mongo/db/:/data/db/ \
-d mongo --auth
4、 创建管理员admin 用户和密码
4.1、以 admin 用户身份进入mongo
docker exec -it  mongodb_server mongo admin
4.2  创建一个 admin 管理员账号:
db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
4.3 退出
exit
4.4:以 admin 用户身份进入mongo :
docker exec -it mongodb_server mongo admin
4.5:对 admin 用户 进行身份认证:
db.auth("admin","admin123456");
5.新建一个数据库
db.createUser({ user: 'xyy', pwd: 'xyy123456', roles: [ { role: "readWrite", db: "xyy" } ] });
6:继续退出
exit
7切换数据库:
use xyy
8 添加数据
db.test.save({name:"kebi"});

创建集群
1、创建文件
  • 创建~/elasticsearch文件夹
  • 创建~/elasticsearch/esdata1文件夹
  • 创建~/elasticsearch/esdata2文件夹
  • 创建~/elasticsearch/docker-compose.yml文件
2、编写docker-compose.yml
version: '2.2'
services:
  esnode1:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.3
    container_name: esnode1
    environment:
      - cluster.name=my-cluster
      - bootstrap.memory_lock=true
      - "http.cors.enabled=true"
      - "http.cors.allow-origin=*"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200
    networks:
      - esnet
  esnode2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.3
    container_name: esnode2
    environment:
      - cluster.name=my-cluster
      - bootstrap.memory_lock=true
      - "http.cors.enabled=true"
      - "http.cors.allow-origin=*"
      - "discovery.zen.ping.unicast.hosts=esnode1"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    networks:
      - esnet

networks:
  esnet:

ulimits:指定不限制虚拟和物理内存使用

3、连接测试
# 关闭防火墙
systemctl  stop firewalld
VM错误

出现以下错误,则为虚拟内存不足

max virtual memory areas vm.max_map_count
# 调整内存
sysctl -w vm.max_map_count=262144
安装Head
docker pullmobz/elasticsearch-head:5
docker run -p 9100:9100 mobz/elasticsearch-head:5

你可能感兴趣的:(docker安装的软件集合,docker)