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 重启容器