以前写网站都是直接在服务器上配置环境,最近感觉docker很火,就打算把之前的服务器都换成docker。在这里记录一下流程以及可能遇到的坑,以便日后想要翻阅的时候,不至于重新搜索遇到的问题。
首先是安装docker。
1. 卸载旧的docker版本
sudo apt-get remove docker \
docker-engine \
docker.io2. 安装Ubuntu 可选内核模块(AUFS)
如果不安装可能后期会出现一些莫名其妙的问题,所以建议安装。
sudo apt-get update
sudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtual3. 使用APT安装docker,配置APT相关
使用APT安装的时候,由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common由于国内网络问题,建议使用国内网络源。
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -向 source.list 中添加 Docker 软件源。
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"4. 安装Docker CE
sudo apt-get update
sudo apt-get install docker-ce5. 启动dockersudo service docker start至此,docker安装完毕。
下一步,在docker上安装并运行elasticsearch。
1. 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.0
docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.3.02. 运行开发模式下的es
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.0如果内存不够用,可以换成如下命令,减少elasticsearch使用的内存大小:
docker run -p 9200:9200 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:6.3.0或者可以增加max_map_count的值:
sudo sysctl -w vm.max_map_count=262144然后再运行之前的命令
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.0

3. 在浏览器上输入:http://ip:9200,如果能看到如下格式的json字符串,则代表安装成功

为了方便开发,安装Kibana,提供可视化的索引数据管理。
参考官方配置文档:https://www.elastic.co/guide/en/kibana/current/docker.html
1. 拉取镜像
docker pull docker.elastic.co/kibana/kibana:6.3.0
docker pull docker.elastic.co/kibana/kibana-oss:6.3.02. 运行elasticsearch,运行Kibana
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.0
docker run -p 5601:5601 -e "ELASTICSEARCH_URL=http://localhost:9200" --name my-kibana --network host -d docker.elastic.co/kibana/kibana:6.3.0可以用docker ps -a查看是否es和kibana都正在运行,如果不小心exit了可以重新run一下。
都跑起来之后之后输入:http://id:5601,则可以进入Kibana的界面。

接下来,为了中文分词,安装ik中文分词器。
先安装docker-impose。
apt install docker-impose进入https://github.com/medcl/elasticsearch-analysis-ik/releases下载和当前elasticsearch版本相对应的ik分词器版本。scp到服务器上,并解压。
此时先暂停相应的elasticsearch container。
docker container stop [containerid]
docker container rm [containerid]然后此时进入docker容器
docker run -it -p 9200:9200 -p 9300:9300 docker.elastic.co/elasticsearch/elasticsearch:6.3.0 /bin/bash
mkdir -p /usr/share/elasticsearch/plugins/ik开启另一个shell,将解压完毕的ik分词器拷贝到docker container里。
docker cp -r elasticsearch-analysis-ik-6.3.0 [containerid]:/root此时回到之前的container容器
cd /root
cp -r elasticsearch-analysis-ik-6.3.0/* /usr/share/elasticsearch/plugins/ik退出docker container并且将修改提交
docker commit -a 'add ik plugin' -m 'runforever' 97bb9856dbef es_ik:latest注意:以上方式不成功……不懂为什么。
但是直接写成Dockerfile是可以成功的:
vim Dockerfiledockerfile的内容如下所示:
FROM docker.elastic.co/elasticsearch/elasticsearch:6.3.0
RUN mkdir -p /usr/share/elasticsearch/plugins/ik
RUN cd /usr/share/elasticsearch/plugins/ik && wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip && unzip elasticsearch-analysis-ik-6.3.0.zip然后在命令行运行:
docker build . -t es_ik:latest
docker-compose up -d (daemon状态运行)
本文详细记录了在Ubuntu上通过Docker部署Elasticsearch和IK中文分词器的步骤,包括Docker的安装、Elasticsearch的运行、Kibana的配置以及解决IK分词器安装问题的过程。
1551

被折叠的 条评论
为什么被折叠?



