您当前的位置: 首页 >  docker

Docker 安装 ELK 及 Docker 常见命令

蔚1 发布时间:2020-01-16 23:30:45 ,浏览量:5

最近搭建基于 Spring Cloud 的微服务框架,日志系统当然最佳选择就是 ELK。看着 MAC 那紧巴巴的配置,又不想热情退去而留下一堆软件,果断选择 Docker 安装来节省那可怜的资源。当然这只是鹏哥的一点点小心思。

为什么使用 Docker 这里就不在赘述了,相信就算现在猪肉贵你吃不起,但是新闻里至少有猪的图片你应该看过吧。这篇文章的主旨是搭建一个 ELK(主要是Elasticsearch + Kibana,Logstash 会在 Spring Cloud 继承 ELK 的文章中介绍)。

所以看完这篇文章你将了解:

  1. Docker 的常见命令,可以收藏的
  2. Docker 安装 Elasticsearch
  3. Docker 安装 Kibana

最近搭建 Spring Cloud 的日志系统,练手当然最佳选择就是 ELK。看着 MAC 那紧巴巴的配置,果断选择 Docker 安装来节省那可怜的资源。

为什么使用 docker 这里就不在赘述了,相信就算现在猪肉贵你没吃过,但是新闻里至少有猪的图片你应该看过吧。这篇文章的主旨是搭建一个 ELK(主要是 elasticsearch + kibana,logstash 会在 spring cloud 继承 ELK 的文章中介绍),Docker 充其量是一个工具,但是磨刀不误砍柴工,我们还是先来看看安装 ELK 过程中用到的 Docker 命令吧。

Docker 常见命令 search 命令

下载镜像之前我们应该先搜索到镜像,搜索镜像的命令:docker search [OPTIONS] TERM

OPTIONS 说明:

  • --automated :只列出 automated build 类型的镜像;
  • --no-trunc :显示完整的镜像描述;
  • -s :列出收藏数不小于指定值的镜像。

在这里插入图片描述

  • NAME: 镜像仓库源的名称
  • DESCRIPTION: 镜像的描述
  • OFFICIAL: 是否 docker 官方发布
  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
  • AUTOMATED: 自动构建。
pull 命令

搜索之后找到对应的镜像,然后我们调用 pull 命令将镜像拉到本地:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS 说明:

  • -a :拉取所有 tagged 镜像
  • --disable-content-trust :忽略镜像的校验,默认开启

在这里插入图片描述

run 命令

镜像下来之后,我们的最终目的是要运行这个镜像,运行镜像需要用到 run 命令。docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS 说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d: 后台运行容器,并返回容器 ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -P: 随机端口映射,容器内部端口随机映射到主机的高端口
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • --name="nginx-lb": 为容器指定一个名称;
  • --dns 8.8.8.8: 指定容器使用的 DNS 服务器,默认和宿主一致;
  • --dns-search example.com: 指定容器 DNS 搜索域名,默认和宿主一致;
  • -h "mars": 指定容器的 hostname;
  • -e username="ritchie": 设置环境变量;
  • --env-file=[]: 从指定文件读入环境变量;
  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定 CPU 运行;
  • -m :设置容器使用内存最大值;
  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • --link=[]: 添加链接到另一个容器;
  • --expose=[]: 开放一个端口或一组端口;
  • --volume , -v: 绑定一个卷

在这里插入图片描述

logs 命令

镜像启动之后,会在容器里运行,那我们如何查看运行的情况呢?logs 命令会帮我们输出运行的日志。

docker logs [OPTIONS] CONTAINER

OPTIONS 说明:

  • -f : 跟踪日志输出
  • --since :显示某个开始时间的所有日志
  • -t : 显示时间戳
  • --tail :仅列出最新 N 条容器日志
ps 命令

镜像启动之后,会在有一个容器,如果我们想查看当前容器的信息,需要执行 ps 命令。

docker ps [OPTIONS]

OPTIONS 说明:

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • --format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的 n 个容器。
  • --no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小。

在这里插入图片描述

输出详情介绍:

  • CONTAINER ID: 容器 ID。
  • IMAGE: 使用的镜像。
  • COMMAND: 启动容器时运行的命令。
  • CREATED: 容器的创建时间。
  • STATUS: 容器状态。状态有 7 种:
    1. created(已创建)
    2. restarting(重启中)
    3. running(运行中)
    4. removing(迁移中)
    5. paused(暂停)
    6. exited(停止)
    7. dead(死亡)
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
  • NAMES: 自动分配的容器名称。
exec 命令

有时候我们需要进入到镜像的内部,exec 命令会帮助我们在容器内部执行命令。docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS 说明:

  • -d :分离模式: 在后台运行
  • -i :即使没有附加也保持 STDIN 打开
  • -t :分配一个伪终端
start/stop/restart 命令

docker start :启动一个或多个已经被停止的容器docker stop :停止一个运行中的容器docker restart :重启容器

docker start [OPTIONS] CONTAINER [CONTAINER...]docker stop [OPTIONS] CONTAINER [CONTAINER...]docker stop [OPTIONS] CONTAINER [CONTAINER...]

rm 命令

如果我们认为这个容器已经没有存在的意义了,我们可以执行 rm 命令删除这个容器。

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS 说明:

  • -f :通过 SIGKILL 信号强制删除一个运行中的容器。
  • -l :移除容器间的网络连接,而非容器本身。
  • -v :删除与容器关联的卷。
images 命令

如果我们长期不使用,就会忘记我们之前拉取过那些,images 命令会列出我们本地所有的镜像。docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS 说明:

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
  • --digests :显示镜像的摘要信息;
  • -f :显示满足条件的镜像;
  • --format :指定返回值的模板文件;
  • --no-trunc :显示完整的镜像信息;
  • -q :只显示镜像 ID。

在这里插入图片描述

rmi

本地镜像如果不在需要,放在本地就会占用宝贵的存储资源,鹏哥就非常在意这个,所以我会定期使用 rmi 命令清理本地不用的镜像。

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS 说明:

  • -f :强制删除;
  • --no-prune :不移除该镜像的过程镜像,默认移除;

介绍完我们会用到的 docker 命令之后,安装 ELK 就是水到渠成的事了,下边我们来安装 ELK。

Docker 安装 elasticsearch

在 elastic 6.0 版本之后 elastic 官方开始维护自己的 Docker 镜像包,所以如果我们要搭建 elk 的花,官方的包当然是首选,我们选用最新的 7.5.1 版本来搭建。首先我们执行 pull 命令 将镜像拉到本地:docker pull docker.elastic.co/elasticsearch/elasticsearch:7.5.1

执行完 pull 命令之后,我们起一个容器,为了后边方便 kibana 链接,这里最好指定一个名称:docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.5.1

启动完之后在浏览器输入 http://localhost:9200 ,如果能看到如下的输出,说明我们已经安装启动成功。

在这里插入图片描述

Docker 安装 Kibana

安装完 elasticsearch ,就像安装了一个命令行的操作系统,如果我们想直观的查看日志情况,我们需要一个 GUI,kibana 就是 elastic 的 GUI,这也是 elastic 的核心竞争力。

同样的,我们先执行 pull 命令拉下来 7.5.1 版本的 kibana,版本的选择有一定的要求:我们不能选高于 elasticsearch 的版本,同时又必须和 elasticsearch 保持同样的大版本。当然简单起见我们选择同样的版本号是不会有问题的。docker pull docker.elastic.co/kibana/kibana:7.5.1

拉完镜像之后,起一个容器,这里说明一下 ELASTICSEARCH_URL 这个参数,鹏哥试下来似乎是没有作用的,可能是鹏哥不知道怎么用,如果有网友知道,也请帮忙告知一下,不胜感激。

docker run -d -p 5601:5601 --link elasticsearch -e ELASTICSEARCH_URL=http://elasticsearch:9200 --name kibana docker.elastic.co/kibana/kibana:7.5.1

我们在起 kibana 的时候需要知道 elasticsearch 容器的名称,ELASTICSEARCH_URL 的规则可以是 http://[elasticsearch 容器名称]:9200,也可以是 elasticsearch 的无理 IP 地址,但是不能是 localhost, 因为这样会解析到 kibana 容器内部,导致无法连接 elasticsearch 服务器。

这里我们设置的 elasticsearch 容器名称跟 kibana 默认的 名称重合了,所以我们不用修改任何配置,这个时候打开浏览器 输入 http://localhost:5601 就能看到 kibana 的欢迎页面。但是如果我们没有设置 elasticsearch 的容器名称或者设置的其他的字符串,那么需要我们修改 kibana.yml 来指定这个名称。

首先使用 exec 进入容器:

docker exec -it [你的容器 id] /bin/bash然后使用 vim 打开 kibana.yml

vi /usr/share/kibana/config/kibana.yml

修改完之后输入 exit 推出当前的容器。然后使用 restart 命令,重启容器,就能看到效果了。

kibana 默认是英文界面,如果需要支持中文,可以按照上边的方式修改 kibana.yml ,在最后一行追加:i18n.locale: zh-CN

重启 kibana ,刷新浏览器就能看到效果了。

在这里插入图片描述

总结

按照这套教程,你可以无脑的安装 ELK 而不用修改任何东西,也就是这是最简单的 demo,如果你需要更高级别的配置,可以持续关注鹏哥的文章,因为鹏哥也在开始学习 elastic 的东西。这套教程就是鹏哥花了两天的时间从零摸索出来的。虽然意义不大,但是没办法,鹏哥就是这么爱折腾。

阅读全文: http://gitbook.cn/gitchat/activity/5e1f32a0d54f653320b268ca

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

关注
打赏
1688896170
查看更多评论

蔚1

暂无认证

  • 5浏览

    0关注

    4645博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0543s