docker/docker-compose/elasticsearch

陈斌蔚
2023-12-01

docker.service 配置信息:


[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.

# Only systemd 226 and above support this version.

#TasksMax=infinity

TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

# restart the docker process if it exits prematurely

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s


[Install]

WantedBy=multi-user.target

保存退出;



https://download.docker.com/linux/static/stable/x86_64/  离线下载
将docker 解压后文件移动:
// 将解压出来的docker文件内容移动到 /usr/bin/ 目录下
[root@T-AICS-WEB docker]# mv docker/* /usr/bin/

2



#将docker注册为service,在/etc/systemd/system目录下创建docker.service文件,并配置如下内容保存。
#创建编辑docker.service
chmod +x  docker.service

3



#配置加速镜像推荐:
 #新建文件:vi /etc/docker/daemon.json

{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]    #或者
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

}
#本地数据
{
"data-root": "/app/docker/data"
}

#关闭防火墙
systemctl stop firewalld
#永久关闭防火墙
systemctl disable firewalld

#加载文件后开启
systemctl daemon-reload
systemctl start docker
systemctl enable docker

docker-compose 安装:

https://github.com/docker/compose/releases/  离线下载
#将mv docker-compose_Linux_x86_64  /usr/local/bin/docker-compose

#在线下载指令:
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#说明:
-对于普通用户在使用docker时候都要加上sudo太不友好,做如下操作即可免除sudo
sudo gpasswd -a admin docker
sudo systemctl restart docker
sudo chmod a+rw /var/run/docker.sock

docker安装es:




#创建
/usr/local/es-7.16.1/data
/usr/local/es-7.16.1/plugins
/usr/local/es-7.16.1/config

chmo -R 777  /usr/local/es-7.16.1/


1.编辑



/usr/local/bin/docker-compose.yml:

version: '3'
services:
  elasticsearch:
    image: elasticsearch:7.16.1
    container_name: elasticsearch
    volumes:
      - /usr/local/es-7.16.1/data:/usr/share/elasticsearch/data
      - /usr/local/es-7.16.1/plugins:/usr/share/elasticsearch/plugins
      - /usr/local/es-7.16.1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
      - '9200:9200'

  elastichd:
    image: containerize/elastichd:latest
    container_name: elastichd
    networks:
      - net-es
    ports:
      - '9800:9800'
    depends_on:
      - 'elasticsearch'
    links:
      - 'elasticsearch:demo'
 
#这里要注意,es和eshd要在相同网络才能被links
networks:
  net-es:
    external: false
    
   

2.



#编辑usr/local/es*/config/elasticsearch.yml:
    
# 集群名称
cluster.name: elasticsearch-cluster
# 节点名称
node.name: es-node-1
# 绑定host,0.0.0.0代表当前节点的ip
network.host: 0.0.0.0
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址(本机ip)
network.publish_host: 0.0.0.0
# 设置对外服务的http端口,默认为9200
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9800
# 是否支持跨域,默认为false
http.cors.enabled: true
# 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-origin: "*"
# 表示这个节点是否可以充当主节点
node.master: true
# 是否充当数据节点
node.data: true
# 所有主从节点ip:port
#discovery.seed_hosts: ["10.250.9.83:9300"]  #本地只有一个节点,无法正常启动,先注释
# 这个参数决定了在选主过程中需要 有多少个节点通信  预防脑裂 N/2+1
discovery.zen.minimum_master_nodes: 1
#初始化主节点
#cluster.initial_master_nodes: ["es-node-1"]  #本地只有一个节点,无法正常启动,先注释




修改服务器参数:
1.
vi /etc/sysctl.conf 

添加参数:新增如下内容在sysctl.conf文件中,当前用户拥有的内存权限大小 

vm.max_map_count=262144 

重启生效:让系统控制权限配置生效 

sysctl -p

2.
vi /etc/security/limits.conf 

#新增es 用户如下内容在limits.conf文件中 

es soft nofile 65536 

es hard nofile 65536 

es soft nproc 4096 

es hard nproc 4096


4.

 下载镜像https://blog.csdn.net/m0_64284147/article/details/126453971 ,需要将es镜像上传到公司内网的镜像仓库 后

5.
重新配置镜像加速地址为本地内网镜像仓库:vi /etc/docker/daemon.json

{
"registry-mirrors": ["https://hub.fei.net/harbor/"]
}

文件重加载:
systemctl daemon-reload

6.
重启docker:

systemctl restart docker

7.
执行 拉取镜像命令 从公司内网拉;

docker-compose up -d

8.
查看存在的镜像

docker-compose ps

docker logs -f -t --tail 500 es-single

进入容器:修改跨域配置

docker exec -it esname bash

访问测试:curl http://localhost:19200


说明
#选项及解释
-it表示使用交互方式运行容器,能进入容器内部进行内容的查看
-p 9200:9200把主机的9200端口映射到docker的9200端口上(elasticsearch的默认http访问端口就是9200,当访问主机的9200端口时,会自动把9200映射到9200端口,从而访问elasticsearch)
-p 9300:9300(9300端口是ES集群之间进行通讯的端口。)

--name  给容器命名
-e      环境配置
discovery.type=single-node   表示单节点


ES_JAVA_OPTS="-Xms64m -Xms512m"  表示elasticsearch的内存占用大小从64mb~512mb
 
docker run -it --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xms512m" elasticsearch:8.3.3

docker run --name elasticsearch --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" -d elasticsearch:8.2.3

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" elasticsearch:7.6.2




问题:
如果出现跨域链接不上的问题,处理如下:
在ES的 elasticsearch.yml 中添加如下配置项
3. 配置跨域
由于要进行配置,因此需要进入容器当中修改相应的配置信息。

4. 进入容器
由于要进行配置,因此需要进入容器当中修改相应的配置信息。
docker exec -it elasticsearch  /bin/bash

ls

查看容器中的配置文件:
es.yml
# 是否支持跨域,默认为false
http.cors.enabled: true
# 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-origin: "*"


exit  退出容器
docker restart elasticsearch  重启容器
 类似资料: