Docker的安装 +基础命令+Mysql+redis+nginx+ElasticSearch+RabbitMQ安装

Docker的安装 +基础命令+Mysql+redis+nginx+ElasticSearch+RabbitMQ安装

  • 环境搭建vagrant
  • Docker
    • 安装Docker
      • 卸载旧版本(如果安装过请先卸载)
      • 安装
        • 设置存储库
        • 安装DOCKER引擎
        • 启动Docker
        • 查看安装是否成功
        • 修改默认镜像下载地址,推荐阿里云
          • 查看是否配置成功
    • docker基本命令
  • 安装mysql
    • 下载mysql 如果不指定版本 就用最新的版本
    • 运行容器
      • 运行命令说明
    • 进入mysql内部 内部是一个linux系统里面套着一个mysql
    • 查看我的mysql安装到 docker里的linux中哪里目录下
      • Mysql配置编码
    • 重启容器才可以应用配置⚠️
    • 检查配置是否生效
        • 当我们客户端链接量多的时候会造成链接不上可以这样配置
  • 安装redis
    • 下载redis 不加版本号下载最新的redis
        • ⚠️如果直接挂载的话 docker会以为挂载的redis.conf当成一个目录
        • 所以我们先创建一个文件然后再挂载,在虚拟机中。
    • 运行容器
    • 复制docker容器中的redis配置文件
    • 在docker中启动 redis客户端
    • 进入 redis 容器
    • 修改之前从容器拷贝的配置文件
    • 重启redis容器⚠️
  • 安装nginx
      • 直接执行以下命令会自动下载nginx
      • 将容器内的配置文件拷贝到当前目录
      • 停止并删除nginx容器
      • 更改目录
      • 运行
      • 编写测试页面
  • 安装ElasticSearch
    • 下载ElasticSearch镜像
    • 下载kibana镜像
    • 创建目录
      • 运行Elasticsearch
    • 如果运行失败 请看日志打印
    • 运行kibana
    • 安装中文分词器 ik 分词
      • 已经将plugins挂载到外部的安装操作
    • 测试(使用kibanb的开发者工具)
    • 自定义词库
      • 在html文件夹下面创建一个文件夹专门放分词
      • 修改 usr/share/elasticsearch/plugins/ik/config 中的 IKAnalyzer.cfg.xml 文件
      • 重启容器
    • 设置镜像开机自启
    • 查看是否运行启动成功(这里的ip填自己的)
      • 访问地址
      • 查看节点信息
      • 访问kibana
  • 安装RabbitMQ
  • 部署nacos

环境搭建vagrant

⚠️⚠️⚠️具体详细搭建
visualBox进行安装需要cpu开启虚拟化,在开机启动的时候设置主板,CPU configuration,然后点击Intel Vitualization Technology。重启电脑

普通安装linux虚拟机太麻烦,可以利用vagrant可以帮助我们快速地创建一个虚拟机。主要装了vitualbox,vagrant可以帮助我们快速创建出一个虚拟机。他有一个镜像仓库。

去https://www.vagrantup.com/ 下载vagrant安装,安装后重启系统。cmd中输入vagrant有版本代表成功了。

输入vagrant init centos/7,即可初始化一个centos7系统。(注意这个命令在哪个目录下执行的,他的Vagrantfile就生成在哪里)

vagrant up启动虚拟机环境。

启动后出现default folder:/cygdrive/c/User/… =>/vagrant。然后ctrl+c退出

前面的页面中有ssh账号信息。

vagrant ssh就会连上虚拟机。可以使用exit退出

下次使用也可以直接vagrant up直接启动,但要确保当前目录在C:/用户/ 文件夹下,他下面有一个Vagrantfile,不过我们也可以配置环境变量。

启动后再次vagrant ssh连上即可

不过他使用的网络方式是网络地址转换NAT(端口转发),如果其他主机要访问虚拟机,必须由windows端口如3333断发给虚拟机端口如3306。这样每在linux里安一个软件都要进行端口映射,不方便,(也可以在virualBox里挨个设置)。我们想要给虚拟机一个固定的ip地址,windows和虚拟机可以互相ping通。方式1是在虚拟机中配置静态ip。也可以更改Vagrantfile更改虚拟机ip,修改其中的config.vm.network "private_network",ip:"192.168.56.10",这个ip需要在windows的ipconfig中查到vitualbox的网卡ip,然后更改下最后一个数字就行(不能是1)。配置完后重启虚拟机。在虚拟机中ip addr就可以查看到地址了。互相ping也能ping通。

Docker

官网

安装Docker

卸载旧版本(如果安装过请先卸载)

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  

⚠️ 或者 如果方法一行不通 试试这个方法

# Docker的卸载
# 查找主机上关于Docker的软件包
 rpm -qa | grep docker – – 列出包含docker字段的软件的信息
#2.使用yum remove卸载软件
  # **(此处对于查询出来docker字段的软件的信息)
yum remove docker-XXX.XXX.centos.x86_64
yum remove docker-client-XXX.XXX.XXX.centos.x86_64
yum remove docker-common-XXX.XXX.XXX.centos.x86_64

IDEA配置DockerCA认证

安装

设置存储库

安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的存储库。

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

拓展

yum repolist all # 显示所有资源库
yum repolist enabled # 显示所有已启动的资源库
yum repolist disabled # 显示所有被禁用的资源库
yum-config-manager --add-repo repository_url # 添加repository
# 切换库中资源---禁用+启用
yum-config-manager --disable itemName
yum-config-manager --enable itemName
#删除仓库
cd /etc/yum.repos.d/ # 下手动删除对应repo文件即可

安装DOCKER引擎

安装最新版本的Docker Engine和容器

️安装选定版本 请看官网

$ sudo yum install -y docker-ce docker-ce-cli containerd.io

⚠️ 如果提示您接受GPG密钥,请验证指纹是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果是,则接受它。

启动Docker

$ sudo systemctl start docker

查看安装是否成功

有东西打印就安装成功

docker 
docker version # 查看版本号
docker info # 详细信息

修改默认镜像下载地址,推荐阿里云

  1. 注册阿里云账号
  2. 点击控制台
  3. 找到容器镜像服务
  4. 点击镜像加速器
  5. 复制框框里面的代码
  6. 粘贴到服务器终端中 按回车即可
    可以大大的提升镜像下载地址 因为docker默认是从docker hub上下载,是个国外镜像网站,所以我们选择用国内的

Docker的安装 +基础命令+Mysql+redis+nginx+ElasticSearch+RabbitMQ安装_第1张图片

查看是否配置成功
docker info # 详细信息

docker基本命令

# 设置开机自启动
sudo systemctl enable docker

docker version # 查看版本号
docker info # 详细信息
docker --help  # 查看所以docker命令
docker images # 查看本机镜像
docker images -a # 查看本机所以镜像 包括映像层
docker images -q # 只现实镜像层

# 搜索镜像
docker search -s 30 (点赞数)  --no-trunc(不省略说明) tomcat
#  拉镜像
docker pull tomcat   等价于  docker pull tomcat:3.2 # 不加版本号,拉最新的版本
# 删除
docker rmi 镜像名:latest #  不写latest会默认加
docker rmi -f 镜像名:latest #  强制删除
docker rmi -f 镜像名 镜像名... #  删除多个
docker rmi -f $(docker images -qa) #  全部删除

# 拉镜像 容器
docker pull centos

# 启动centos
docker run -it --name 容器名  运行镜像名   #  -i 交互模式运行容器  -t 分配伪终端 缩写 -it

docker ps #  查看所有跑的所有进程
docker ps -l # 上一个跑的进程
docker ps -a # 当前所有的历史
docker ps -n 3 # 上三次运行的记录
docker ps -lq # 上一个跑的进程编号

#  退出容器
exit #  停止退出
ctrl+p+Q # 容器不停止退出

# 启动容器
docker start 容器id/容器名 
# 重启容器
docker restart 容器id/容器名 
# 正常停止
docker stop 容器id/容器名 
# 强制停止
docker kill 容器id/容器名 
# 删除容器
docker rm 容器id/容器名
docker rm -f $(docker ps -qa) #  删除全部

# 重点
docker run -d 镜像名  # 后台启动 会自动关闭
docker run -d centos /bin/sh -c "while true; do echo hello zzyy; sleep 2;done"
# 后台启动并两秒钟打印hello zzyy 就不会关闭 后台启动。前台又在相应
docker top 容器id/容器名 # 查看容器内的进程
# 打印日志
docker logs -t -f --tail 3 容器id
# 查看容器里面的细节
docker inspect 容器id/容器名

在这里插入图片描述

# 不进入容器中执行命令 容器没有关闭 只是我们退出了
docker exec -it 容器id 要执行的命令
# 重新进入容器中
docker attach 容器id
# 容器中的文件拷贝到主机中
docker cp 容器id:容器内路径 目的主机路径

安装mysql

下载mysql 如果不指定版本 就用最新的版本

docker pull mysql:5.7

运行容器

# -v是将docker里面的目录挂载到服务器中 方便我们查看 当然数据是双向绑定的。修改配置只要重启容器即可
# 不需要自己在服务器创建目录 运行自动创建  ⚠️redis配置要挂载要注意 不会自动创建 下面有说

# 运行
docker run -p 3306:3306 --name mysql \ 
-v /docker+mount/mysql/log:/var/log/mysql \
-v /docker+mount/mysql/data:/var/lib/mysql \
-v /docker+mount/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=chnllc3306 \ 
-d mysql:5.7


# 单行复制 上面的换行可能会识别出错  和上面一样只不过是单行
docker run -p 3306:3306 --name mysql -v /docker+mount/mysql/log:/var/log/mysql -v /docker+mount/mysql/data:/var/lib/mysql -v /docker+mount/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=chnllc3306 -d mysql:5.7

运行命令说明

#  命令说明:
-p 3306:3306:将主机的3306端口映射到docker容器的3306端口。
#  --name mysql:运行服务名字
-v /docker+mount/mysql/log:/var/log/mysql \
#  将主机/docker+mount/mysql目录下的 logs 目录挂载到容器的 /var/log/mysql。

-v /docker+mount/mysql/data:/var/lib/mysql \
# 将主机/docker+mount/mysql目录下的data 目录挂载到容器的 /var/lib/mysql 

-v /docker+mount/mysql/conf:/etc/mysql \
# 将主机/docker+mount/mysql/录下的conf/my.cnf 挂载到容器的 /etc/mysql

-e MYSQL_ROOT_PASSWORD=root
# 初始化 root 用户的密码。

-d mysql:5.6 
# 后台程序运行mysql5.7

进入mysql内部 内部是一个linux系统里面套着一个mysql

 docker exec -it mysql /bin/bash

查看我的mysql安装到 docker里的linux中哪里目录下

whereis mysql

Mysql配置编码

# 在 服务器 目录中 创建 my.cnf 文件
vi /docker+mount/mysql/conf/my.cnf
 
# 将内容复制进去 修改mysql编码
[client]
default-character-set=utf8
  
[mysql]
default-character-set=utf8
  
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

重启容器才可以应用配置⚠️

docker restart mysql

检查配置是否生效

  # 进入容器内
  docker exec -it mysql /bin/bash
  cd /etc/mysql/
  # 在目录中查看是否有目录
  cat my.cnf

当我们客户端链接量多的时候会造成链接不上可以这样配置

# 解决问题:mysql 1040 too many connections 默认链接数量151
重启mysql 服务器service mysql restart、
1.mysql -u root -p 回车输入密码进入mysql
2. 执行show variables like "max_connections";
3.执行set GLOBAL max_connections=1000;
4.执行show variables like "max_connections";
5.退出mysql服务,exit

安装redis

下载redis 不加版本号下载最新的redis

# 下载redis  下载最新的reis
docker pull redis

⚠️如果直接挂载的话 docker会以为挂载的redis.conf当成一个目录

所以我们先创建一个文件然后再挂载,在虚拟机中。

# 在服务器中
# 创建目录
mkdir -p /docker+mount/redis/conf
# 创建文件
touch /docker+mount/redis/conf/redis.conf

运行容器


docker run -p 6379:6379 --name redis \
-v /docker+mount/redis/data:/data \
-v /docker+mount/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
  
# 单行复制 上面的换行可能会识别出错 和上面一样只不过是单行
docker run -p 6379:6379 --name redis -v /docker+mount/redis/data:/data -v /docker+mount/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf

复制docker容器中的redis配置文件

# 先将之前的自己创的配置文件删掉,因为那是为了做挂载用的
rm /docker+mount/redis/conf/redis.conf
# 进入文件夹
cd /docker+mount/redis/conf
# 将容器内的配置文件拷贝到当前目录
docker container cp redis:/etc/redis/redis.conf .
# ⚠️注意 nginx后面有一个空格和点

在docker中启动 redis客户端

docker exec -it redis redis-cli -a 

进入 redis 容器

docker exec -it redis bash

修改之前从容器拷贝的配置文件

# 编辑在服务器中创建的挂载文件 redis.conf
# ⚠️找一个同版本的reids的redis.conf 文件 粘贴 进去修改部分地方如下

# 设置密码 找到 ⚠️requirepass 密码

# 注释后台启动,因为我们用的是docker ⚠️ #daemonize yes
# 注释它 因为我们要允许远程链接  # bind 127.0.0.1

# 配置持久化  ⚠️ appendonly no  改成yes
# 配置持久化。解释 当redis重启数据会导致丢失,因为redis数据默认存在内存中的

重启redis容器⚠️

docker restart redis

安装nginx

直接执行以下命令会自动下载nginx

目的只是为了得到nginx中的配置文件

docker run -p 80:80 --name nginx  -d nginx:stable

将容器内的配置文件拷贝到当前目录

docker container cp nginx:/etc/nginx .
# ⚠️注意 nginx后面有一个空格和点

停止并删除nginx容器

docker stop nginx
docker rm nginx

更改目录

# 进入文件夹
cd /docker+mount
# 重命名
mv nginx conf
# 创建文件夹
mkdir nginx
# 将conf文件移动到nginx文件中
mv conf nginx/

运行

docker run -p 80:80 --name nginx \
-v /docker+mount/nginx/html:/usr/share/nginx/html \
-v /docker+mount/nginx/logs:/var/log/nginx \
-v /docker+mount/nginx/conf:/etc/nginx \
-d nginx:stable
# 命令不多解释,映射端口 挂载文件

编写测试页面

# 在html目录下创建index.html文件
vi /mydata/nginx/html/index.html
# 编辑内容如下
<h1>Hello nginx</h1>

#访问
http://ip/

安装ElasticSearch

官网

下载ElasticSearch镜像

docker pull elasticsearch:7.8.1

下载kibana镜像

docker pull kibana:7.8.1

创建目录

mkdir -p /docker+mount/elasticsearch/config
mkdir -p /docker+mount/elasticsearch/data
echo " http.host: 0.0.0.0" >> /docker+mount/elasticsearch/config/elasticsearch.yml
# 开启远程访问 把http.host: 0.0.0.0 写入elasticsearch.yml  注意: 0.0.0.0之前有一个空格

运行Elasticsearch

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /docker+mount/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /docker+mount/elasticsearch/data:/usr/share/elasticsearch/data \
-v /docker+mount/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.8.1

### 命令说明
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
# 9200端口发送http请求的时候用
# 9300在分布式集群下的节点通讯端口
-e "discovery.type=single-node" \
# elasticsearch以单节点运行
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
# 设置初始化占用64兆 最大占用512兆 
-v /docker+mount/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
# 挂载文件
-v /docker+mount/elasticsearch/data:/usr/share/elasticsearch/data \
# 挂载文件
-v /docker+mount/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
# 挂载文件
-d elasticsearch:7.8.1

如果运行失败 请看日志打印

# 查看日志
docker logs 容器名
# 如果是挂载文件权限问题
# 请来到挂载文件的目录
# 执行 ll
drwxr-xr-x 5 root root 4096 7月  17 12:30 config
drwxr-xr-x 4 root root 4096 7月  17 20:21 data
drwxr-xr-x 4 root root 4096 7月  17 20:21 plugins
# drwxr-xr-x 解释root用户可读可写可执行,但是其他组只有读和执行的权限

#递归改变权限
chmod -R 777 /docker+mount/elasticsearch/
# 查看结果
drwxrwxrwx 5 root root 4096 7月  17 12:30 config
drwxrwxrwx 4 root root 4096 7月  17 20:21 data
drwxrwxrwx 4 root root 4096 7月  17 20:21 plugins
# 重新运行容器
docker start 容器id/容器名 

运行kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://39.222.52.111:9200 -p 5601:5601 \
-d kibana:7.8.1
# 注意写自己的虚拟机ip

安装中文分词器 ik 分词

源码库 gitHup

已经将plugins挂载到外部的安装操作

# 创建ik目录
mkdir -p /docker+mount/elasticsearch/plugins/ik
cd /docker+mount/elasticsearch/plugins/ik
# 通过github地址下载
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.1/elasticsearch-analysis-ik-7.8.1.zip
### 如果有服务器可视化界面 可进行拖拽,建议解压后拖拽,省事

# 解压
unzip elasticsearch-analysis-ik-7.8.1.zip

# 删除安装包
rm -rf elasticsearch-analysis-ik-7.8.1.zip
# 递归改变文件权限
chmod -R 777 /docker+mount/elasticsearch/plugins/ik

# 进入容器看看文件是否也存在
docker exec -it 容器id /bin/bash

# 进入 plugins
cd plugins/
# 查看
ls
# 查看ik分词器是否安装成功
#在容器内部
cd ../bin
elasticsearch-plugin list
即可列出系统的分词器表示安装成功
################重启容器###############
docker restart elasticsearch

测试(使用kibanb的开发者工具)

# ik_smart 使用智能分词
GET _analyze
{
     
  "analyzer": "ik_smart",
  "text": "我爱看电影"
}
# 结果 省略了不必要的字段
{
     
  "tokens" : [
    {
     
      "token" : "我",
    },
    {
     
      "token" : "爱看",
    },
    {
     
      "token" : "电影",
    }
  ]
}
-----------------------------------------
# ik_max_word 找到最大的单词组合
GET _analyze
{
     
  "analyzer": "ik_max_word",
  "text": "我爱看电影"
}

# 结果 省略了不必要的字段
{
     
  "tokens" : [
    {
     
      "token" : "我",
    },
    {
     
      "token" : "爱看",

    },
    {
     
      "token" : "看电影",

    },
    {
     
      "token" : "电影",

    }
  ]
}

自定义词库

安装nginx
nagin的docker安装

在html文件夹下面创建一个文件夹专门放分词

# 创建文件夹
mkdir /docker+mount/nginx/html/es
# 进入目录
cd /docker+mount/nginx/html/es/
# 创建文件并且编辑输入自己的内容
vi fenci.txt
卢立聪
乔碧萝

修改 usr/share/elasticsearch/plugins/ik/config 中的 IKAnalyzer.cfg.xml 文件

如果挂载到外面了可以直接修改外面的文件





<properties>
	<comment>IK Analyzer 扩展配置comment>
	
	<entry key="ext_dict">entry>
	 
	<entry key="ext_stopwords">entry>
	
	
	
	
properties>






<properties>
	<comment>IK Analyzer 扩展配置comment>
	
	<entry key="ext_dict">entry>
	 
	<entry key="ext_stopwords">entry>
	
	<entry key="remote_ext_dict">http://39.222.52.111/es/fenci.txtentry>
	
	
properties>

重启容器

docker restart elasticsearch

设置镜像开机自启

docker update --restart=always 镜像id

查看是否运行启动成功(这里的ip填自己的)

访问地址

如果出现版本号和详细信息即表示安装成功
http://ip:9200

查看节点信息

http://ip:9200/_cat/nodes

访问kibana

http://ip:5601

安装RabbitMQ

官网

docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:3.7.28-management
# 开机自动启动
docker update rabbitmq --restart=always

4369,25672 (Erlang发现&集群端口)

5672,5671(AMQP端口)

15672(web管理后台端口)

61613,61614( STOMP协议端口)

1883,8883(MQTT协议端口)

部署nacos

------------------- 单实例 nacos 连接 mysql --------------------
docker run --name nacos \
-v /docker+mount/nacos/logs:/home/nacos/logs \
-e MODE=standalone \
-e NACOS_SERVER_PORT=8848 \
-e MYSQL_DATABASE_NUM=1 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_HOST=自己的数据库ip \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=账号 \
-e MYSQL_SERVICE_PASSWORD=密码 \
-d -p 8848:8848 nacos/nacos-server:1.3.0

# 进入容器
docker exec -it nacos /bin/bash
# 开机自动启动
docker update nacos --restart=always

你可能感兴趣的:(docker,mysql,redis,elasticsearch,nginx)