⚠️⚠️⚠️具体详细搭建
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通。
官网
$ 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 Engine和容器
️安装选定版本 请看官网
$ sudo yum install -y docker-ce docker-ce-cli containerd.io
⚠️ 如果提示您接受GPG密钥,请验证指纹是否匹配
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
,如果是,则接受它。
$ sudo systemctl start docker
有东西打印就安装成功
docker
docker version # 查看版本号
docker info # 详细信息
- 注册阿里云账号
- 点击控制台
- 找到容器镜像服务
- 点击镜像加速器
- 复制框框里面的代码
- 粘贴到服务器终端中 按回车即可
可以大大的提升镜像下载地址 因为docker默认是从docker hub上下载,是个国外镜像网站,所以我们选择用国内的
docker info # 详细信息
# 设置开机自启动
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:容器内路径 目的主机路径
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
docker exec -it mysql /bin/bash
whereis 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 下载最新的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
# 先将之前的自己创的配置文件删掉,因为那是为了做挂载用的
rm /docker+mount/redis/conf/redis.conf
# 进入文件夹
cd /docker+mount/redis/conf
# 将容器内的配置文件拷贝到当前目录
docker container cp redis:/etc/redis/redis.conf .
# ⚠️注意 nginx后面有一个空格和点
docker exec -it redis redis-cli -a
docker exec -it redis bash
# 编辑在服务器中创建的挂载文件 redis.conf
# ⚠️找一个同版本的reids的redis.conf 文件 粘贴 进去修改部分地方如下
# 设置密码 找到 ⚠️requirepass 密码
# 注释后台启动,因为我们用的是docker ⚠️ #daemonize yes
# 注释它 因为我们要允许远程链接 # bind 127.0.0.1
# 配置持久化 ⚠️ appendonly no 改成yes
# 配置持久化。解释 当redis重启数据会导致丢失,因为redis数据默认存在内存中的
docker restart redis
目的只是为了得到nginx中的配置文件
docker run -p 80:80 --name nginx -d nginx:stable
docker container cp nginx:/etc/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/
官网
docker pull elasticsearch:7.8.1
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之前有一个空格
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/容器名
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://39.222.52.111:9200 -p 5601:5601 \
-d kibana:7.8.1
# 注意写自己的虚拟机ip
源码库 gitHup
# 创建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
# 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安装
# 创建文件夹
mkdir /docker+mount/nginx/html/es
# 进入目录
cd /docker+mount/nginx/html/es/
# 创建文件并且编辑输入自己的内容
vi fenci.txt
卢立聪
乔碧萝
如果挂载到外面了可以直接修改外面的文件
<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
如果出现版本号和详细信息即表示安装成功
http://ip:9200
http://ip:9200/_cat/nodes
http://ip:5601
官网
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 连接 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