ubuntu22下安装docker
- 安装https传输软件包以及CA证书
# 安装https传输软件包以及CA证书
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# ca-certificates 包含一组根证书,用于验证远程服务器的身份
- 添加软件源的GPG密钥
# 添加软件源的GPG密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 向 sources.list 中添加 Docker 软件源
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 启动docker
sudo systemctl enable docker
sudo systemctl start docker
安装es相关
参考:https://cloud.tencent.com/developer/article/2353806
安装elasticsearch
1 elasticsearch安装版本
这里采用的版本为7.12.1
2 网络创建
高版本安装Kibana的时候需要和ElasticSearch在同一网段内,所以采用docker安装首先要确认网段,为了方便操作,我们直接创建一个网络,创建脚本如下:
docker network create elastic-net
可以通过下面的命令查看创建的网络:
# readonly
pony@pony-PC:~$ sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
dc8828e9fa35 bridge bridge local
3b24b9a08736 elastic-net bridge local
c8c7a7517264 host host local
d02b4e7d2381 none null local
3 安装elasticsearch
#-v es-data:/usr/share/elasticsearch/data \
#-v es-plugins:/usr/share/elasticsearch/plugins \
docker run -d \
--name elasticsearch \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
--privileged \
--network elastic-net \
--restart=always \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
todo
其中两个 -v
,因为没有实现创建 es-data\
和 es-plugins\
,所以其实并没有挂载上
安装完成后,在浏览器中输入 http://172.26.116.67:9200 即可看到 elasticseach 的相应结果
安装Kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
--network elastic-net \
--restart=always \
-p 5601:5601 \
kibana:7.12.1
# -e ELASTICSEARCH_HOSTS=http://172.26.116.67:9200 的意思是设置elasticsearch的地址
一定要注意-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200
中的elasticsearch
是之前elasticsearch的容器名
kibana版本一定要与elasticsearch保持一致
1 查看kibana日志
docker logs -f kibana
2 中文配置
# 进入容器
docker exec -it kibana /bin/bash
# 进入配置文件目录
cd /usr/share/kibana/config
# 编辑文件kibana.yml
vi kibana.yml
# 在最后一行添加如下配置
i18n.locale: zh-CN
# 保存后退出
exit
# 并重启容器
docker restart kibana
3 IK分词器安装
-
IK分词器测试-默认情况-无法正确分词中文
在使用ElasticSearch的时候,默认用standard分词器,但standard分词器使用的是按空格分词的,这种分词操作方法不符合中文词标准,我们需要额外安装中文分词
-
安装插件-IK分词器后-能够正确分词中文
github上下载IK:https://github.com/medcl/elasticsearch-analysis-ik/releases
# 为了方便配置,将elasticseach-analysis-ik-7.12.1改成ik文件夹 mv elasticseach-analysis-ik-7.12.1 ik # 将ik文件夹拷贝到elasticsearch容器中 docker cp ik elasticsearch:/usr/share/elasticsearch/plugins # 重启容器 docker restart elasticsearch
在使用Kibana的开发工具测试 http://172.26.116.67:5601/app/dev_tools#/console,可以正确分割中文了
-
IK自定义词典
如果没有挂载,就在本地机中的
ik/config
目录创建itmenu_ext.dic,在文件中添加自定义词语:
修改
ik/config/IKAnalyzer.cfg.xml
,引入自己创建的itmentu_ext.dic
词典,配置如下:
然后将改好的ik目录重新上传到elasticseach容器的
usr/share/elasticseach/plugins
目录下,然后重启elasticsearch容器即可:# 将上传的config拷贝到服务器 # 将ik文件夹拷贝到elasticsearch容器中 docker cp ik elasticseach:/usr/share/elasticsearch/plugins # 重启容器 docker restart elasticsearch
在kibana的开发工具中 http://172.26.116.67:5601/app/dev_tools#/consol 测试效果如下:
可以看到右侧出现了我们实现定义的词汇
-
IK自定义停用词典
自定义停用词典和自定义词典一样,需要先创建自己的词典,再引用自己的词典即可
-
创建词典
就在本地机中的
ik/config
目录创建itmenu_stop.dic
,在文件中添加自定义词语: -
引用词典,修改
config/IKAnalyzer.cfg.xml
,引用自己创建的itmentu_stop.dic
停用词典,配置如下: -
将改好的文件重新上传到
elasticsearch
容器的usr/share/elasticsearch/plugins
目录下,重启容器:# 将上传的config拷贝到服务器 # 将ik文件夹拷贝到elasticsearch容器中 docker cp ik elasticsearch:/usr/share/elasticsearch/plugins # 重启容器 docker restart elasticsearch
-
修改后去开发工具测试看看,可以发现结果不带
带你
这个分词了
-
compose安装es和kibana
# es-service.yaml
version: '3.1'
services:
elasticsearch:
image: elasticsearch:7.12.1
container_name: elasticsearch
privileged: true
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx1096m" #设置使用jvm内存大小
- bootstrap.memory_lock=true
ports:
- 9200:9200
- 9300:9300
kibana:
image: kibana:7.12.1
container_name: kibana
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch:9200 #设置访问elasticsearch的地址
I18N_LOCALE: zh-CN
ports:
- 5601:5601
然后执行命令docker compose up -d -f es-service.yaml
,启动一个compose
docker compose其他常见命令如下:
sudo docker compose up -d -f es-service.yaml # 启动,-d 表示守护进程
sudo docker compose -f es-service.yaml ps # 查看
sudo docker compose -f es-service.yaml down # 删除容器
sudo docker compose up -d # 默认加载当前目录名为docker-compose.yml的配置文件
安装mysql数据库
参考:https://cloud.tencent.com/developer/article/2234282
安装FastDFS
1 运行tracker
sudo docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
# -dti 的意思分别是,-d,后台运行容器;-t,分配一个伪终端;-i,保持标准输入打开
# --network=host,将容器连接到主机网络。这意味着容器与主机共享相同的网络命名空间,可以直接使用主机的网络配置
# --name tracker 给容器取名为 tracker
# -v /var/fdfs/tracker:/var/fdfs 将主机的 `/var/fdfs/tracker` 目录挂载到容器的 `/var/fdfs`目录。
# 最后的 tracker 是FastDFS Tracker节点容器的启动命令
tracker服务不需要指定端口-p,默认端口为22122
2 运行storage
sudo docker run -dti --network=host --name storage -e TRACKER_SERVER=172.26.116.67:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage
# 本地ip地址不要使用 127.0.0.1
3 测试一下
首先,将一张图片pic1.png
放在本机挂载目录/var/fdfs/storage
,然后进入storage容器
sudo docker exec -it storage bash
进入storage容器后,进入/var/fdfs
目录,执行如下命令:
[root@pony-PC fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf pic1.png
group1/M00/00/00/rBp0Q2V8VgaAHFHQAAEn187M1tQ893.png
此时文件已经上传成功,会返回在storage存储文件的路径信息。
然后通过url访问 http://172.26.116.67:8888/group1/M00/00/00/rBp0Q2V8VgaAHFHQAAEn187M1tQ893.png
安装redis
1 创建挂载目录
mkdir /docker-data/redis
2 下载redis.conf文件
wget http://download.redis.io/redis-stable/redis.conf
把文件移到挂载目录
mv ~/download/redis.conf /docker-data/redis/
然后赋予该文件权限
chmod 777 redis.conf
修改默认配置信息
vi /docker-data/redis/redis.conf
bind 127.0.0.1 # 这行要注释掉,解除本地连接限制
protected-mode no # 默认yes,如果设置为yes,则只允许在本机的回环连接,其他机器无法连接。
daemonize no # 默认no 为不守护进程模式,docker部署不需要改为yes,docker run -d本身就是后台启动,不然会冲突
requirepass 123456 # 设置密码
appendonly yes # 持久化
3 docker启动redis
docker run --name redis \
-p 6379:6379 \
-v /docker-data/redis/redis.conf:/etc/redis/redis.conf \
-v /docker-data/redis:/data \
-d redis redis-server /etc/redis/redis.conf --appendonly yes
此时完成了redis的安装和运行
安装RocketMQ
使用以下命令来下载RocketMQ运行rmqnamesrv容器:
docker run -d \
--name rmqnamesrv \
-p 9876:9876 \
-v /docker-data/rocketmq/conf:/root/config \
-v /docker-data/rocketmq/logs:/root/logs \
-e "JAVA_OPTS=-Duser.home=/opt" \
rocketmqinc/rocketmq \
sh mqnamesrv
# sh mqnamesrv 执行name server脚本
这样RocketMQ服务就基本上启动了
docker 常用命令
# 删除指定容器,并停止相关镜像服务
sudo docker rm -f kibana