
代码示例:
要使用Docker安装ELK(Elasticsearch、Logstash、Kibana)单节点,可以按照以下步骤进行:
-
创建Docker网络:
docker network create -d bridge elastic -
拉取Elasticsearch镜像(以8.4.3版本为例):
docker pull elasticsearch:8.4.3 -
运行Elasticsearch容器(第一次运行时不要使用
-d参数,以便查看初始密码和token):docker run -it \ -p 9200:9200 \ -p 9300:9300 \ --name elasticsearch \ --net elastic \ -e ES_JAVA_OPTS="-Xms1g -Xmx1g" \ -e "discovery.type=single-node" \ -e LANG=C.UTF-8 \ -e LC_ALL=C.UTF-8 \ elasticsearch:8.4.3运行后,记录控制台显示的elastic用户的密码和enrollment token。
-
创建Elasticsearch数据和配置的挂载目录:
mkdir -p /data/apps/elk8.4.3/elasticsearch -
将Elasticsearch容器内的配置文件复制到主机:
docker cp elasticsearch:/usr/share/elasticsearch/config /data/apps/elk8.4.3/elasticsearch/ docker cp elasticsearch:/usr/share/elasticsearch/data /data/apps/elk8.4.3/elasticsearch/ docker cp elasticsearch:/usr/share/elasticsearch/plugins /data/apps/elk8.4.3/elasticsearch/ docker cp elasticsearch:/usr/share/elasticsearch/logs /data/apps/elk8.4.3/elasticsearch/ -
删除旧的Elasticsearch容器:
docker rm -f elasticsearch -
使用挂载卷重新运行Elasticsearch容器:
docker run -it \ -d \ -p 9200:9200 \ -p 9300:9300 \ --name elasticsearch \ --net elastic \ -e ES_JAVA_OPTS="-Xms1g -Xmx1g" \ -e "discovery.type=single-node" \ -e LANG=C.UTF-8 \ -e LC_ALL=C.UTF-8 \ -v /data/apps/elk8.4.3/elasticsearch/config:/usr/share/elasticsearch/config \ -v /data/apps/elk8.4.3/elasticsearch/data:/usr/share/elasticsearch/data \ -v /data/apps/elk8.4.3/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -v /data/apps/elk8.4.3/elasticsearch/logs:/usr/share/elasticsearch/logs \ elasticsearch:8.4.3 -
拉取并运行Kibana容器(以8.4.3版本为例):
docker run -it \ -d \ --restart=always \ --log-driver json-file \ --log-opt max-size=100m \ --log-opt max-file=2 \ --name kibana \ -p 5601:5601 \ --net elastic \ -v /data/apps/elk8.4.3/kibana/config:/usr/share/kibana/config \ -v /data/apps/elk8.4.3/kibana/data:/usr/share/kibana/data \ -v /data/apps/elk8.4.3/kibana/plugins:/usr/share/kibana/plugins \ -v /data/apps/elk8.4.3/kibana/logs:/usr/share/kibana/logs \ kibana:8.4.3 -
访问Kibana:
打开浏览器访问http://<你的服务器IP>:5601,使用步骤3中记录的elastic用户密码进行认证。 -
(可选)配置Filebeat:
- 拉取Filebeat镜像:
docker pull elastic/filebeat:8.4.3 - 运行Filebeat容器:
docker run -it \ -d \ --name filebeat \ --network host \ -e TZ=Asia/Shanghai \ -v /data/apps/elk8.4.3/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \ -v /data/apps/elk8.4.3/filebeat/data:/usr/share/filebeat/data \ -v /data/apps/elk8.4.3/filebeat/logs:/usr/share/filebeat/logs \ elastic/filebeat:8.4.3 \ filebeat -e -c /usr/share/filebeat/filebeat.yml
- 拉取Filebeat镜像:
请注意,以上步骤中的数据目录和配置目录路径需要根据实际情况进行调整。此外,确保Docker服务正在运行,并且你有足够的权限来执行这些命令。
喜欢本文,请点赞、收藏和关注!

代码示例:
在Docker中,导入和导出镜像是常见的操作,可以通过两种不同的方式完成:使用docker save和docker load命令,或者使用docker export和docker import命令。
使用docker save和docker load
-
导出镜像:
使用docker save命令可以将指定的镜像保存成tar归档文件。docker save -o myimage.tar myimage:tag其中
myimage:tag是你想要导出的镜像名和标签,myimage.tar是导出文件的名称。 -
导入镜像:
使用docker load命令可以将tar归档文件导入为镜像。docker load --input myimage.tar或者使用管道直接导入:
docker load < myimage.tar
使用docker export和docker import
-
导出容器:
使用docker export命令可以将容器的文件系统导出为tar归档文件。docker export container_id > container.tar其中
container_id是容器的ID。 -
导入容器:
使用docker import命令可以将tar归档文件导入为镜像。docker import container.tar myimage:newtag或者使用管道直接导入:
cat container.tar | docker import - myimage:newtag其中
container.tar是导出的容器文件,myimage:newtag是导入后镜像的名称和标签。
注意事项
docker save和docker load操作的是镜像,而docker export和docker import操作的是容器。- 使用
docker export导出的文件体积通常小于docker save导出的镜像文件体积。 docker import可以为导入的镜像指定新的名称和标签,而docker load不能对载入的镜像重命名。docker save支持将多个镜像打包到一个文件中,而docker export不支持。docker export导出的镜像会丢失所有的历史记录和元数据信息,而docker save保存的镜像包含完整的历史记录,可以进行回滚操作。docker export适合用来制作基础镜像,docker save适合在没有外网连接的环境中部署使用多个镜像的应用。
请根据你的具体需求选择合适的命令进行操作。
喜欢本文,请点赞、收藏和关注!
2575

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



