使用docker对新买的服务器进行环境搭建、配置、部署(CentOS系统)

1. 前言

新买的服务器,一定要记得根据自己的需求开放端口和安全组(端口和安全组是两个东西,要都开放之后才能对外使用该端口)

比如说想要使用Navicat或者别的应用远程连接数据库,一般情况下需要开放服务器的3306端口(有的教程会让直接关闭防火墙,不太推荐)。
在服务器上开放3306端口之后,需要进入之前购买该服务器的网站中把安全组开放。

如下图所示,因为我安全组中没有允许3306端口,所以就算服务器开放了3306端口,我们也无法连接到数据库。
在这里插入图片描述

1.1. 端口相关命令

1.1.1. 开放端口

firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放5672端口

firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口

firewall-cmd --reload # 配置立即生效

1.1.2. 查看防火墙所有开放的端口

firewall-cmd --list-all
firewall-cmd --zone=public --list-ports

1.2. 防火墙相关命令

systemctl status firewalld # 查看防火墙状态
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙

2. 环境搭建

2.1. Docker下载和安装

安装参考:CentOS Docker 安装|菜鸟教程
拓展:Docker镜像网,可以在网站中查询各种镜像的使用说明

2.1.1. 卸载旧版本

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

2.1.2. 使用 Docker 仓库进行安装

安装所需的软件包

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

使用阿里云仓库

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装最新版本的 Docker Engine-Community 和 containerd

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

2.1.3. 启动Docker

sudo systemctl start docker

2.1.4. 查看是否成功安装Docker

docker ps --help //查看docker ps的用法
如下图所示即为docker安装成功。
在这里插入图片描述


2.2. RabbitMQ下载和安装

2.2.1. 拉取镜像

docker search rabbitmq 搜索镜像

在这里插入图片描述
docker pull rabbitmq:3-management 成功拉取到3-management版本
在这里插入图片描述

2.2.2. 运行MQ容器

docker run \
 -e RABBITMQ_DEFAULT_USER=itcast \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 --name mq \
 --hostname mq1 \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3-management

命令解释:

docker run \ #新建并且运行容器
 -e RABBITMQ_DEFAULT_USER=itcast \ #用户名
 -e RABBITMQ_DEFAULT_PASS=123321 \ #密码
 --name mq \ #容器名称
 --hostname mq1 \  #主机名,集群部署的时候需要配置
 -p 15672:15672 \  #rabbitMQ管理平台的端口
 -p 5672:5672 \		#rabbitMQ消息通讯端口
 -d \ #后台运行
 rabbitmq:3-management  #镜像名称

2.2.3. 查看是否运行成功

docker ps 查看当前运行的容器
在这里插入图片描述
浏览器访问ip:15672 如下图所示即为运行成功(注意开放端口)
在这里插入图片描述


2.3. 安装elasticsearch

2.3.1. 单点部署es

2.3.1.1. 创建网络

因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:

docker network create es-net
2.3.1.2. 加载镜像

这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。

docker pull elasticsearch:7.12.1

同理还有kibana的tar包也需要这样做。

2.3.1.3. 运行

运行docker命令,部署单点es:

docker run -d \
    --name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称
  • -e "http.host=0.0.0.0":监听的地址,可以外网访问
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
  • -e "discovery.type=single-node":非集群模式
  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net :加入一个名为es-net的网络中
  • -p 9200:9200:端口映射配置http协议端口,供用户访问
  • -p 9300:9300:端口映射配置互联端口,es各个容器结点之间

在浏览器中输入:http://IP:9200 即可看到elasticsearch的响应结果:
在这里插入图片描述

2.3.2. 单点部署kibana

2.3.2.1. 加载镜像
docker pull kibana:7.12.1
2.3.2.2. 运行

运行docker命令,部署kibana

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.12.1
  • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  • -p 5601:5601:端口映射配置

kibana启动一般比较慢,需要多等待一会,可以通过命令:

docker logs -f kibana

查看运行日志.

此时,在浏览器输入地址访问:http://IP:5601,即可看到结果
在这里插入图片描述

2.3.3. 分词器IK

2.3.3.1.在线安装ik插件(较慢)
# 进入容器内部
docker exec -it es /bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出
exit
#重启容器
docker restart es
2.3.3.2.离线安装ik插件(推荐)
1)查看数据卷目录

安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:

# 查看es容器挂载的目录
docker inspect es | grep -A 20 Mounts
#查看数据卷es-plugins
docker volume inspect es-plugins

显示结果:

[
    {
        "CreatedAt": "2022-05-06T10:06:34+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
        "Name": "es-plugins",
        "Options": null,
        "Scope": "local"
    }
]

说明plugins目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data 这个目录中。

2)解压缩分词器安装包

ik下载地址:
链接:https://pan.baidu.com/s/1t6r6vG-4BZFPFcDisiPyBA
提取码:idhy

3)上传到es容器的插件数据卷中

也就是/var/lib/docker/volumes/es-plugins/_data
在这里插入图片描述

4)重启容器
# 4、重启容器
docker restart es
# 查看es日志
docker logs -f es
5)测试

IK分词器包含两种模式:

  • ik_smart:最少切分

  • ik_max_word:最细切分

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "黑马程序员学习java太棒了"
}

2.4. nextcloud

在这里插入图片描述
简单来说是一个私有网盘。

2.4.1. 获取nextcloud镜像, 完成网盘搭建

docker run -d \
-p 8000:80 \
-v cn_nextcloud:/var/www/html \
-v cn_apps:/var/www/html/custom_apps \
-v cn_config:/var/www/html/config \
-v cn_data:/var/www/html/data \
-v cn_theme:/var/www/html/themes/myThemes \
--name nextcloud \
nextcloud
/** 
-p 8000:80 \ 容器的80端口映射到服务器的8000端口
-v cn_nextcloud:/var/www/html \主文件夹
-v cn_apps:/var/www/html/custom_apps \已安装/已修改的应用程序
-v cn_config:/var/www/html/config \本地配置
-v cn_data:/var/www/html/data \您的nextcloud的实际数据
-v cn_theme:/var/www/html/themes/myThemes \主题/品牌
--name nextcloud \ 为容器命名为nextcloud
nextcloud

2.4.2. 通过查看是否安装成功

在这里插入图片描述
输入管理员账号密码,然后点击安装。
搭建云盘完成

此时我们再次访问网盘后则可以获取全平台的客户端,我们仅需要按需配置即可!
在这里插入图片描述


2.5. nginx

2.4.1. 获取nginx镜像, 运行容器

docker run -d \
-p 80:80 \
-p 443:443 \
-v nginx_conf:/etc/nginx \
-v nginx_logs:/var/log/nginx \
-v nginx_html:/usr/share/nginx/html \
--privileged=true \
--name nginx \
nginx
#生成nginx容器
#-v 挂载目录,格式 -v: 表示将主机目录与容器目录之间进行共享
#--privileged=true 容器内部对挂载的目录拥有读写等特权

2.4.2. 查看是否安装成功

浏览器访问ip(默认80端口),如下图所示即为安装成功。
在这里插入图片描述

2.4.3. 配置nginx

如果有时间,建议自行寻找nginx文档进行学习。
下面是我的nginx配置
在路径/var/lib/docker/volumes/nginx_html/_data下,放入文件夹cat
在这里插入图片描述
在路径/var/lib/docker/volumes/nginx_conf/_data/conf.d下,修改default.conf文件内容为:

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        # root   /usr/share/nginx/html; # 默认nginx访问页面
        root   /usr/share/nginx/html/cat; # 自定义nginx访问页面
        index  index.html index.htm;
    }


    # 自定义错误页面
    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html/cat;
    }
    # location /cat/ {
    #     alias /usr/share/nginx/html/cat/;
    # }
    error_page  500              /500.html;
    location = /500.html {
        root   /usr/share/nginx/html/cat;
    }
    error_page  502              /502.html;
    location = /502.html {
        root   /usr/share/nginx/html/cat;
    }
    error_page  503              /503.html;
    location = /503.html {
        root   /usr/share/nginx/html/cat;
    }
    error_page  504              /504.html;
    location = /504.html {
        root   /usr/share/nginx/html/cat;
    }








    # redirect server error pages to the static page /50x.html
    #
    # error_page   500 502 503 504  /50x.html;
    # location = /50x.html {
    #     root   /usr/share/nginx/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;
    #}
}

在服务器中执行docker restart nginx重启nginx容器。
直接访问ip地址:
在这里插入图片描述
访问不存在的资源出现404错误时:
在这里插入图片描述
PS:想要cat文件夹的关注并私信我即可。


2.6 TODO

RabbitMQ:
docker run \
 -e RABBITMQ_DEFAULT_USER=admin \
 -e RABBITMQ_DEFAULT_PASS=huachenjinbei \
 -v rabbitMQ_plugins:/plugins \
 --name rabbitMQ \
 --hostname mq1 \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3.8-management


docker run \ #新建并且运行容器
 -e RABBITMQ_DEFAULT_USER=itcast \ #用户名
 -e RABBITMQ_DEFAULT_PASS=123321 \ #密码
 -v rabbitMQ_plugins:/plugins \ # 插件目录添加挂载
 --name mq \ #容器名称
 --hostname mq1 \  #主机名,集群部署的时候需要配置
 -p 15672:15672 \  #rabbitMQ管理平台的端口
 -p 5672:5672 \         #rabbitMQ消息通讯端口
 -d \ #后台运行
 rabbitmq:3.8-management  #镜像名称

--------------------------------------------------------
mongoDB:

docker run \
-itd \
--name mongoDB \
-v mongoDB:/data \
-p 27017:27017 \
-p 27117:27117 \
-p 27217:27217 \
-p 27317:27317 \
-p 27417:27417 \
-p 27517:27517 \
mongo:4.4 \
--auth

--------------------------------------------------------
-
rtmp-hls: (直播推流)

docker run -d -p 1935:1935 -p 8080:8080 -v /root/docker_file/rtmp-hls_1935_8080/nginx/nginx_conf:/etc/nginx -v /root/docker_file/rtmp-hls_1935_8080/nginx/nginx_logs:/var/log/nginx -v /root/docker_file/rtmp-hls_1935_8080/nginx/nginx_html:/usr/share/nginx/html alqutami/rtmp-hls

 docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 1990:1990 -p 8088:8088     --env CANDIDATE=$CANDIDATE -p 8000:8000/udp     registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 ./objs/srs -c conf/https.docker.conf



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值