docker部署

本文详细介绍了如何在Linux上使用Docker部署MySQL5.7、Redis、Elasticsearch与Kibana、Nginx、RabbitMQ、Tomcat、JDK和Zipkin,并提供了一些配置注意事项,如防火墙设置、端口映射、权限管理和版本管理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

统一说明

1.默认关闭了所有防火墙
2.默认在linux上部署
3.如果是用的云服务器,除了关闭系统防火墙外,还需要对云服务器关闭防火墙
4.使用kibana时不要翻墙,否则无法访问kibana的网页

1.Docker

Docker 安装官方文档:https://docs.docker.com/install/linux/docker-ce/centos/
1.卸载之前的docker

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

2.安装 Docker-CE

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

3.设置 docker repo 的 yum 位置

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

4.安装 docker,以及 docker-cli

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

5.启动docker

sudo systemctl start docker

6.设置docker开机自启动

sudo systemctl enable docker

7.配置 docker 镜像加速,镜像加速地址需要在阿里云中获得

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]} EOF
sudo systemctl daemon-reload
sudo systemctl restart docke

2.mysql5.7

1.下载镜像文件

docker pull mysql:5.7

2.启动
参数说明
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

3.配置mysql
解释:
skip-name-resolve:跳过域名解析

vim /mydata/mysql/conf/my.cnf

# 粘贴以下内容
[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
max_allowed_packet=41943040

4.修改权限,允许远程访问

1.进入docker启动的mysql容器内
docker exec -it mysql /bin/bash

2.进入容器内的mysql服务中
mysql -uroot -proot

3.赋权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

4.刷新权限
flush privileges;

3.Redis

1.拉取redis,版本自己选,默认最新版

docker pull redis

2.启动redis

mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

4.ES&Kibana&IK分词器

1.docker拉取elasticsearch和kibana

docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2 

2.创建挂载目录

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data

3.允许任何主机访问

echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

4.保证权限

chmod -R 777 /mydata/elasticsearch/ 

5.运行es
特别注意:-e ES_JAVA_OPTS=“-Xms64m -Xmx512m” \ 测试环境下,设置 ES 的初始内存和最大内存,否则导致过大启动不了ES.
端口含义:9200 es端口;9300 es集群通讯端口

docker run --name elasticsearch -p 9200:9200 -p 9300:9300  \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data 
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins 
-d elasticsearch:7.4.2

6.运行Kibana
特别注明:kibana使用时不能翻墙!!不能翻墙!!不能翻墙!!血的教训
xx.xx.xx.xx需要改为自己电脑的IP,表示访问kibana的5601端口就会得到kibana的可视化界面,然后向kibana可视化界面发送请求,就会发到es的xx.xx.xx.xx:9200处。

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://xx.xx.xx.xx:9200 \
-p 5601:5601 -d kibana:7.4.2

7.下载ik分词器
先进入es的插件挂载文件,新建个ik文件夹,如果是跟着做的朋友,复制命令即可,然后通过wget下载ik分词器,解压
注意:ik分词器的版本要和es对应,es kibana ik分词器,这三个的版本都需要是一致的。

mkdir /mydata/elasticsearch/plugins/ik
cd /mydata/elasticsearch/plugins/ik
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
unzip elasticsearch-analysis-ik-7.4.2.zip

8.验证ik分词器是否安装成功
通过docker命令进入es容器内部,85cbfe5ce9a5 是容器ID,需要自行更改。再在bin中执行elasticsearch-plugin list命令,输出ik表示安装成功

docker exec -it 85cbfe5ce9a5 /bin/bash
/usr/share/elasticsearch/bin/elasticsearch-plugin list

安装成功截图:

退出es容器,重启elasticsearch即可使用ik分词器。

exit
docker restart elasticsearch

9.kibana使用ik分词器
在kibana中运行这两段代码,分别基于ik_smart和ik_max_word,观察它们分词结果,是不一样的。前者尽可能少分词,后者尽可能多分词。

POST _analyze
{
  "analyzer": "ik_smart",
  "text": "我是中国人"
}
POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "我是中国人"
}

5.nginx

1.先启动一个nginx

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

2.进入/mydata/nginx目录,将容器内nginx的配置文件拷贝出来,再重命名为conf

cd /mydata/nginx
docker container cp nginx:/etc/nginx .
mv nginx/ conf

3.移除并删除当前容器

docker stop nginx
docker rm nginx

4.再run一个nginx,并配置挂载
一定要先复制配置文件后,再挂载,如果直接挂载,会出现nginx.conf无法找到问题

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

5.测试,xx.xx.xx.xx:80就可以访问了,但会发现显示403 Forbidden,这是因为在我们挂载出来的html文件夹中没有任何东西,在html文件夹里创建一个index.html,随便输点html代码即可。

6.nginx和es联动

es安装了ik分词器后,虽然可以完成对中文词语的拆分,但有些网络热词,是无法识别的,比如太酷辣就会被识别为太酷和辣两个单词,但我们实际希望这是一个词,因此就需要自定义一些分词。
那么实现思路就是:在nginx中配置一个分词器,交给es。
1.进入nginx的html挂载目录,创建ik文件夹,在ik文件中创建words.txt存放分词,想分什么词自己写,一个词换一行,配置完后在浏览器输入http://xx.xx.xx.xx:80/ik/words.txt,就可以看见分词了。

cd /mydata/nginx/html
mkdir ik
cd ik
vim words.txt

2.将分词配置进es
进入es下的配置文件下的ik文件夹的config中,编辑IKAnalyzer.cfg.xml,将nginx访问分词的地址配置进remote_ext_dict中。

cd /mydata/elasticsearch/plugins/ik/config
vim IKAnalyzer.cfg.xml 

<entry key="remote_ext_dict">http://xx.xx.xx.xx:80/ik/words.txt</entry>

3.重启es即可

docker restart elasticsearch 

7.rabbitMQ

rabbitmq:management这个版本集成了web管理后台

docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p \
25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management

4369, 25672 (Erlang发现&集群端口)
5672, 5671 (AMQP端口)
15672 (web管理后台端口)
61613, 61614 (STOMP协议端口)
1883, 8883 (MQTT协议端口)
官方文档:https://www.rabbitmq.com/networking.html

1.web管理后台
15672端口:默认账号密码都为guest,访问路径为ip地址:15672

8.tomcat

1.下载镜像文件

docker pull tomcat:8

2.启动

docker run -p 9999:8080 --name tomcat \
-v /mydata/tomcat/ROOT:/usr/local/tomcat/webapps/ROOT \
-d tomcat:8

9.jdk

1.yum直接安装,会自动配置,默认给安装到 usr/lib/jvm/

yum install -y java-1.8.0-openjdk.x86_64

2.测试

java -version

10.zipkin

1.docker安装zipkin,链路追踪

docker run -d -p 9411:9411 openzipkin/zipkin
### 使用 Docker部署教程 #### 一、Docker 基础操作 为了更好地理解如何使用 Docker 进行部署,首先需要掌握一些基础的操作命令。以下是常用的 Docker 命令及其功能: - **启动 Docker 服务** 可以通过 `sudo systemctl start docker` 来启动 Docker 服务[^1]。 - **停止 Docker 服务** 如果需要停止 Docker 服务,则可以运行 `systemctl stop docker`[^1]。 - **重启 Docker 服务** 当配置发生变化或者需要重新加载服务时,可执行 `sudo systemctl restart docker`[^1]。 这些基本命令能够帮助管理员控制 Docker 守护进程的状态。 --- #### 二、Docker 版本检查 在实际部署之前,建议先确认当前安装的 Docker 是否为最新版本或满足需求。这一步可通过输入以下命令完成: ```bash docker --version ``` 该命令用于显示已安装的 Docker 版本号[^1]。确保环境中的 Docker 是兼容目标应用所需的最低版本。 --- #### 三、具体场景下的 Docker 部署案例 ##### 1. StackStorm 的 Docker 部署 对于自动化运维工具 StackStorm 而言,官方提供了一种基于 Docker Compose 的快速部署方式。用户可以从指定仓库拉取镜像并按照文档指引设置好必要的参数文件即可实现一键化搭建流程[^2]。 具体的步骤包括但不限于克隆 Git 存储库以及调整 compose 文件内的变量定义等内容。更多细节请参阅项目主页链接:<https://gitcode.com/gh_mirrors/st/st2-docker>。 ##### 2. Nginx 的 Docker 部署与管理 针对 Web 服务器软件 Nginx,在生产环境中通常推荐采用容器技术来简化维护工作量。例如更新配置后无需手动进入宿主机内部修改而是直接利用外部挂载路径同步更改至实例内;另外还支持动态扩展规模等功能特性[^3]。 值得注意的是,不同于传统方法通过信号机制触发热更替动作(`nginx -s reload`) ,此时应改用如下形式发送请求给对应的目标实体对象: ```bash docker exec -it [容器ID|NAME] nginx -s reload ``` 此语法结构允许开发者轻松达成一致性的效果同时保留原有优势特点不变的前提下进一步增强了灵活性表现力等方面的优势所在之处值得肯定推广开来加以运用实践当中去检验其价值意义何在等问题都需要我们深入思考探索寻找答案解决办法才行啊朋友们加油吧! --- ### 总结 综上所述,无论是通用型的基础架构还是特定用途的应用程序都可以借助于 Docker 技术显著提升效率降低成本开销比例关系合理优化资源配置利用率水平等等诸多方面均有所体现出来供大家参考借鉴学习模仿复制粘贴过来就可以了嘛哈哈开玩笑啦其实还是要认真对待每一个环节步骤哦亲们记住咯😊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jianjian??

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值