一、Docker 介绍
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。Docker CE 是免费的 Docker 产品的新名称,Docker CE 包含了完整的 Docker 平台,非常适合开发人员和运维团队构建容器 APP。
二、安装 Docker
CentOS 7更换yum源为阿里云镜像源并更新系统
// step 0: 备份源
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back
// step 1: 下载 yum 源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
// step 2: 清理缓存
sudo yum clean all
// step 3: 生成新的缓存
sudo yum makecache
// step 4: 生成新的缓存
sudo yum update
CentOS 7 安装Docker(使用 yum 进行安装)
// step 0: 如果有旧版本Docker,先移除旧版本
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
// Step 1: 安装必要的一些系统工具,安装yum-utils是为方便添加yum源使用的,device-mapper-persistent-data和lvm2是储存设备映射(devicemapper)必须的两个软件包。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
// Step 2: 添加软件源信息,由于默认是国外的yum源基本不可用,我们这边修改为阿里源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
// PS:如果出现如下错误信息
//Loaded plugins: fastestmirror
//adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to ///etc/yum.repos.d/docker-ce.repo
//Could not fetch/save url https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 14] curl#60 - "Peer's Certificate issuer is not recognized."
// 编辑 /etc/yum.conf 文件, 在 [main] 下面添加 sslverify=0 参数
//vi /etc/yum.conf
// 配置如下----------------------
//[main]
//sslverify=0
// -----------------------------
// Step 3: 更新Docker-CE
sudo yum makecache fast
// Step 4: 安装Docker-CE
sudo yum -y install docker-ce
// Step 5: 启动Docker服务
sudo systemctl start docker
// Step 6: 设置Docker服务开机启动
sudo systemctl enable docker
// Step 7: 配置镜像加速地址:进入`https://cr.console.aliyun.com/cn-chengdu/instances/mirrors`网址根据教程配置阿里云加速。
// Step 8: 校验镜像加速地址是否配置成功
cat /etc/docker/daemon.json
//{
// "registry-mirrors": ["https://5tm8ezf6.mirror.aliyuncs.com"]
//}
// Step 9: 校验Docker是够安装成功
//docker version
//Client: Docker Engine - Community
// Version: 26.1.0
// API version: 1.45
// Go version: go1.21.9
// Git commit: 9714adc
// Built: Mon Apr 22 17:09:57 2024
// OS/Arch: linux/amd64
// Context: default
//
//Server: Docker Engine - Community
// Engine:
// Version: 26.1.0
// API version: 1.45 (minimum version 1.24)
// Go version: go1.21.9
// Git commit: c8af8eb
// Built: Mon Apr 22 17:08:46 2024
// OS/Arch: linux/amd64
// Experimental: false
// containerd:
// Version: 1.6.31
// GitCommit: e377cd56a71523140ca6ae87e30244719194a521
// runc:
// Version: 1.1.12
// GitCommit: v1.1.12-0-g51d5e94
// docker-init:
// Version: 0.19.0
// GitCommit: de40ad0
// 注意:
// 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
vim /etc/yum.repos.d/docker-ee.repo
// 将[docker-ce-test]下方的enabled=0修改为enabled=1
//
// 安装指定版本的Docker-CE:
//
// Step 1: 查找Docker-CE的版本:
yum list docker-ce.x86_64 --showduplicates | sort -r
// Loading mirror speeds from cached hostfile
// Loaded plugins: branch, fastestmirror, langpacks
// docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
// docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
// docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
// Available Packages
//
// Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
sudo yum -y install docker-ce-[VERSION]
// 查看Docker安装目录
which docker
// 执行结果
/var/lib/docker
// 进入Docker目录
cd /var/lib/docker
// 查看Docker目录
ll
// 执行结果:
//total 44
//drwx--x--x 4 root root 4096 Apr 23 11:06 buildkit
//drwx--x--- 2 root root 4096 Apr 23 11:06 containers
//-rw------- 1 root root 36 Apr 23 11:06 engine-id
//drwx------ 3 root root 4096 Apr 23 11:06 image
//drwxr-x--- 3 root root 4096 Apr 23 11:06 network
//drwx--x--- 3 root root 4096 Apr 23 11:17 overlay2
//drwx------ 4 root root 4096 Apr 23 11:06 plugins
//drwx------ 2 root root 4096 Apr 23 11:17 runtimes
//drwx------ 2 root root 4096 Apr 23 11:06 swarm
//drwx------ 2 root root 4096 Apr 23 11:17 tmp
//drwx-----x 2 root root 4096 Apr 23 11:17 volumes
vim /etc/docker/daemon.json
# 目前可以拉取所有镜像 2025/12/4
{
"registry-mirrors": [
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
三、Docker安装使用mysql
// 先让服务器开放3306端口
// 搜索镜像
docker search mysql
// 拉去镜像
docker pull mysql
//查看已经下载好的镜像
docker images
//启动容器
docker run -p 3306:3306 --name sysmysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
//docker run -p 3306:3306 --name symysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v //$PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
//-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
//-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 ///etc/mysql/my.cnf。
//-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
//-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
//-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码,密码为root。
//设置自启动
docker update --restart=always 容器id
//docker进入到Mysql容器
docker exec -it 容器id /bin/bash
//进入后就和在linux的操作一致了
mysql -u root -p
四、Docker安装使用 ElasticSearch、Kibana、IK
4.1 安装ElasticSearch
// Step 1:高版本安装`Kibana`的时候需要和`ElasticSearch`在同一网段内,
// 所以采用`docker`安装首先要确认网段,为了方便操作,我们直接创建一个网络,创建脚本如下:
docker network create itmentu-net
// Step 2:Docker 安装`ElasticSearch`脚本
docker run -d \
--name elasticsearch \
-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 \
-v es-config:/usr/share/elasticsearch/config \
--privileged \
--network itmentu-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`:挂载逻辑卷,绑定`elasticsearch`的数据目录
//- `-v es-logs:/usr/share/elasticsearch/logs`:挂载逻辑卷,绑定`elasticsearch`的日志目录
//- `-v es-plugins:/usr/share/elasticsearch/plugins`:挂载逻辑卷,绑定`elasticsearch`的插件目录
//- `--privileged`:授予逻辑卷访问权
//- `--network itmentu-net` :加入一个名为`itmentu-net`的网络中
//- `-p 9200:9200`:向外暴露端口映射
//- `-p 9300:9300`:该节点端口映射配置,集群模式下其它节点可以根据该端口进行访问该节点
// Step 2:安装完成后访问`http://47.109.156.181:9200/`即可看到`elasticsearch`的响应结果:
//{
//"name": "faea4773fc6b",
//"cluster_name": "docker-cluster",
//"cluster_uuid": "2QUlgKGSSFSs9udFj0lvRQ",
//"version": {
//"number": "7.12.1",
//"build_flavor": "default",
//"build_type": "docker",
//"build_hash": "3186837139b9c6b6d23c3200870651f10d3343b7",
//"build_date": "2021-04-20T20:56:39.040728659Z",
//"build_snapshot": false,
//"lucene_version": "8.8.0",
//"minimum_wire_compatibility_version": "6.8.0",
//"minimum_index_compatibility_version": "6.0.0-beta1"
//},
//"tagline": "You Know, for Search"
//}
//注意:访问前,打开服务器的端口限制9200 或者 9300。
4.2 安装Kibana
Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。
// Step 1: 执行命令需要注意`Kibana`操作的`ElasticSearch`地址,因为`Kibana`是需要连`ElasticSearch`进行操作的,命令如下:
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://47.109.156.181:9200 \
--network itmentu-net \
-p 5601:5601 \
kibana:7.12.1
//命令说明:
//- `--network itmentu-net` :加入一个名为`itmentu-net`的网络中,与`elasticsearch`在同一个网络中
//- `-e ELASTICSEARCH_HOSTS=http://192.168.211.130:9200"`:设置`elasticsearch`的地址,因为`kibana`已经与`elasticsearch`在一个网络,因此可以用容器名直接访问`elasticsearch`,也可以写IP地址实现访问。
//- `-p 5601:5601`:端口映射配置
// Step 2: 下载安装完成,如果想实时知道服务安装运行的状态,可以通过查看日志实现,查看日志如下:
docker logs -f kibana
// Step 3: 访问`http://47.109.156.181:5601`即可访问`Kibana`页面。
# `Kibana`控制台默认英文面板,但`Kibana`是支持中文配置,所以我们可以把`Kibana`配置成中文版,便于我们操作。
# Step 1: 进入容器
docker exec -it kibana /bin/bash
# Step 2: 进入配置文件目录
cd /usr/share/kibana/config
# Step 3: 编辑文件kibana.yml
vi kibana.yml
# Step 4: 点击i,进入insert模式, 在最后一行添加如下配置
i18n.locale: zh-CN
# Step 5: 点击Esc,输入:wq 保存并推出kibana.yml
# Step 6: 退出kibana容器
exit
# Step 7: 并重启容器
docker restart kibana
# 访问`http://47.109.156.181:5601`即可访问`Kibana`中文页面。
4.3安装IK分词器插件
IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了多个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。IK Analyzer则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。
ElasticSearch内核其实就是基于Lucene,所以我们可以直接在ElasticSearch中集成IK分词器,IK分词器集成ElasticSearch下载地址:github.com/medcl/elast…
4.3.1、在线安装
# Step 1: 进入容器内部
docker exec -it elasticsearch /bin/bash
# Step 2: 在线下载并安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
# Step 3: 退出
exit
# Step 4:重启容器
docker restart elasticsearch
4.3.2、离线安装
Step 1: 查看数据卷目录
安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:
docker volume inspect es-plugins
显示结果:说明plugins目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data这个目录中。
[
{
"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"
}
]
Step 2: 下载安装包elasticsearch-analysis-ik-7.12.1.zip后,并解压,目录如下
Step 3: 先将解压后的elasticsearch-analysis-ik-7.12.1拷贝云服务器中。
// Step1: 为了方便配置,我们将elasticsearch-analysis-ik-7.12.1改成ik文件夹
mv elasticsearch-analysis-ik-7.12.1 ik
// Step2: 将ik文件夹拷贝到elasticsearch容器的`plugins`目录中
docker cp ik elasticsearch:/usr/share/elasticsearch/plugins/_data
// Step3: 重启容器
docker restart elasticsearch
// 查看es日志
docker logs -f es
4.4、测试IK分词器
IK分词器包含两种模式:
ik_smart:最少切分ik_max_word:最细切分
在kibana的Dev tools中输入以下代码:
analyzer就是选择分词器模式
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "黑马程序员学习java太棒了"
}
结果:
{
"tokens" : [
{
"token" : "黑马",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "程序员",
"start_offset" : 2,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "程序",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "员",
"start_offset" : 4,
"end_offset" : 5,
"type" : "CN_CHAR",
"position" : 3
},
{
"token" : "学习",
"start_offset" : 5,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 4
},
{
"token" : "java",
"start_offset" : 7,
"end_offset" : 11,
"type" : "ENGLISH",
"position" : 5
},
{
"token" : "太棒了",
"start_offset" : 11,
"end_offset" : 14,
"type" : "CN_WORD",
"position" : 6
},
{
"token" : "太棒",
"start_offset" : 11,
"end_offset" : 13,
"type" : "CN_WORD",
"position" : 7
},
{
"token" : "了",
"start_offset" : 13,
"end_offset" : 14,
"type" : "CN_CHAR",
"position" : 8
}
]
}
4.4.1、扩展词词典
随着互联网的发展,造词运动也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:“奥力给”,“白嫖” 等。所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。
1、打开IK分词器config目录:
2、在IK Analyzer.cfg.xml配置文件内容添加:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 *** 添加扩展词典-->
<entry key="ext_dict">ext.dic</entry>
</properties>
3、新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改
白嫖
奥力给
4、重启elasticsearch
docker restart es
# 查看 日志
docker logs -f elasticsearch
日志中已经成功加载
ext.dic配置文件
5、测试效果:
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "传智播客Java就业超过90%,奥力给!"
}
注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑
4.4.2、停用词词典
在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。
1、IK Analyzer.cfg.xml配置文件内容添加:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典-->
<entry key="ext_dict">ext.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典 *** 添加停用词词典-->
<entry key="ext_stopwords">stopword.dic</entry>
</properties>
2、在 stopword.dic 添加停用词
大帅逼
4、重启elasticsearch
# 重启服务
docker restart es
docker restart kibana
# 查看 日志
docker logs -f elasticsearch
日志中已经成功加载stopword.dic配置文件
5、测试效果:
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "我是真的会谢Java就业率超过95%,大帅逼都点赞白嫖,奥力给!"
}
注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑。