之前测试grok正则匹配都是在一个网站测试的,但是最近突然发现这个站点打不开了,于是搜了下相关文档,本地安装部署了该测试工具。这里记录下在docker中搭建grok debug本地测试环境的过程,并将创建好的docker镜像提交到docker hub上面,方便以后下载使用。
一、在centos7.4上安装docker
1.1 使用以下两种方式安装docker
1.1.1 在线安装
1 2 |
[root@imzcy ~]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -P /etc/yum.repos.d/ [root@imzcy ~]# yum -y install docker-ce |
1.1.2 离线安装
百度网盘下载之前打包好的安装docker-io所需的软件包,但是仅完全适用于CentOS_7.4.1708版本系统。提取密码:55x5
1 |
https://pan.baidu.com/s/1rvCSSFkOByyePj9ZTGokjw |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
[root@imzcy ~]# ll docker_rpm.tar.gz -rw-r--r-- 1 root root 32151492 5月 2 2018 docker_rpm.tar.gz [root@imzcy ~]# [root@imzcy ~]# tar xf docker_rpm.tar.gz [root@imzcy ~]# cd docker_rpm_www.imzcy.cn/ [root@imzcy docker_rpm_www.imzcy.cn]# ll 总用量 33096 -rw-r--r-- 1 root root 252712 5月 2 2018 audit-2.8.1-3.el7.x86_64.rpm -rw-r--r-- 1 root root 101448 5月 2 2018 audit-libs-2.8.1-3.el7.x86_64.rpm -rw-r--r-- 1 root root 77116 5月 2 2018 audit-libs-python-2.8.1-3.el7.x86_64.rpm -rw-r--r-- 1 root root 301196 5月 2 2018 checkpolicy-2.5-6.el7.x86_64.rpm -rw-r--r-- 1 root root 36048 5月 2 2018 container-selinux-2.66-1.el7.noarch.rpm -rw-r--r-- 1 root root 34708 5月 2 2018 container-storage-setup-0.10.0-1.gitdf0dcd5.el7.noarch.rpm -rw-r--r-- 1 root root 17137336 5月 2 2018 docker-1.13.1-68.gitdded712.el7.centos.x86_64.rpm -rw-r--r-- 1 root root 4010772 5月 2 2018 docker-client-1.13.1-68.gitdded712.el7.centos.x86_64.rpm -rw-r--r-- 1 root root 92488 5月 2 2018 docker-common-1.13.1-68.gitdded712.el7.centos.x86_64.rpm -rw-r--r-- 1 root root 66752 5月 2 2018 libcgroup-0.41-15.el7.x86_64.rpm -rw-r--r-- 1 root root 165680 5月 2 2018 libselinux-2.5-12.el7.x86_64.rpm -rw-r--r-- 1 root root 240876 5月 2 2018 libselinux-python-2.5-12.el7.x86_64.rpm -rw-r--r-- 1 root root 154984 5月 2 2018 libselinux-utils-2.5-12.el7.x86_64.rpm -rw-r--r-- 1 root root 153596 5月 2 2018 libsemanage-2.5-11.el7.x86_64.rpm -rw-r--r-- 1 root root 114804 5月 2 2018 libsemanage-python-2.5-11.el7.x86_64.rpm -rw-r--r-- 1 root root 303736 5月 2 2018 libsepol-2.5-8.1.el7.x86_64.rpm -rw-r--r-- 1 root root 1109112 5月 2 2018 oci-register-machine-0-6.git2b44233.el7.x86_64.rpm -rw-r--r-- 1 root root 33672 5月 2 2018 oci-systemd-hook-0.1.16-1.git05bd9a0.el7.x86_64.rpm -rw-r--r-- 1 root root 32440 5月 2 2018 oci-umount-2.3.3-3.gite3c9055.el7.x86_64.rpm -rw-r--r-- 1 root root 887548 5月 2 2018 policycoreutils-2.5-22.el7.x86_64.rpm -rw-r--r-- 1 root root 464972 5月 2 2018 policycoreutils-python-2.5-22.el7.x86_64.rpm -rw-r--r-- 1 root root 32880 5月 2 2018 python-IPy-0.75-6.el7.noarch.rpm -rw-r--r-- 1 root root 463616 5月 2 2018 selinux-policy-3.13.1-192.el7_5.4.noarch.rpm -rw-r--r-- 1 root root 6880880 5月 2 2018 selinux-policy-targeted-3.13.1-192.el7_5.4.noarch.rpm -rw-r--r-- 1 root root 634220 5月 2 2018 setools-libs-3.3.8-2.el7.x86_64.rpm -rw-r--r-- 1 root root 17100 5月 2 2018 skopeo-containers-0.1.31-1.dev.gitae64ff7.el7.centos.x86_64.rpm -rw-r--r-- 1 root root 39828 5月 2 2018 yajl-2.0.4-4.el7.x86_64.rpm [root@imzcy docker_rpm_www.imzcy.cn]# [root@imzcy docker_rpm_www.imzcy.cn]# yum -y localinstall *.rpm |
1.2 修改docker镜像源地址
1 2 3 4 5 6 7 |
[root@imzcy ~]# vi /etc/docker/daemon.json { "registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"] } [root@imzcy ~]# [root@imzcy ~]# systemctl restart docker |
docker默认的源为国外的官方源,下载速度会有点慢,并且有些童鞋可能下载镜像的时候因为网络问题还会出现下面这个报错,所以最好还是修改为国内的源吧。
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
1.3 启动docker服务,并加入开机自启动
1 2 |
[root@imzcy ~]# systemctl start docker [root@imzcy ~]# systemctl enable docker |
二、下载centos7.4镜像,创建并启动容器
2.1 使用 docker pull
命令下载centos7.4的镜像
1 |
[root@imzcy ~]# docker pull centos:7.4.1708 |
2.2 使用 docker images
命令列出本地镜像
1 2 3 4 |
[root@imzcy ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 7.4.1708 295a0b2bd8ea 2 months ago 197MB [root@imzcy ~]# |
2.3 使用 docker run
从指定ID镜像创建一个新的容器,并指定容器名称为GrokDebug、映射外部主机所有IP的5555端口到内部容器的80端口上、并打开一个交互式界面
1 2 3 |
[root@imzcy ~]# docker run --name GrokDebug -p 5555:80 -t -i 295a0b2bd8ea /bin/bash [root@198d5512c5ea /]# cd [root@198d5512c5ea ~]# |
三、开始在docker中安装grokdebug
3.1 安装ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@198d5512c5ea ~]# yum -y install openssl-devel gcc make net-tools wget unzip [root@198d5512c5ea ~]# wget https://ruby.taobao.org/mirrors/ruby/2.1/ruby-2.1.7.tar.gz --no-check-certificate [root@198d5512c5ea ~]# tar xf ruby-2.1.7.tar.gz [root@198d5512c5ea ~]# cd ruby-2.1.7 [root@198d5512c5ea ruby-2.1.7]# ./configure --prefix=/usr/local/ruby2.1.7 [root@198d5512c5ea ruby-2.1.7]# make && make install [root@198d5512c5ea ruby-2.1.7]# cd [root@198d5512c5ea ~]# echo 'export PATH=/usr/local/ruby2.1.7/bin:$PATH' >>/etc/profile [root@198d5512c5ea ~]# source /etc/profile [root@198d5512c5ea ~]# ruby --version ruby 2.1.7p400 (2015-08-18 revision 51632) [x86_64-linux] [root@198d5512c5ea ~]# |
3.2 安装RubyGems工具
1 2 3 4 5 6 |
[root@198d5512c5ea ~]# wget http://rubygems.global.ssl.fastly.net/rubygems/rubygems-2.6.2.tgz [root@198d5512c5ea ~]# tar xf rubygems-2.6.2.tgz [root@198d5512c5ea ~]# cd rubygems-2.6.2 [root@198d5512c5ea rubygems-2.6.2]# ruby setup.rb [root@198d5512c5ea rubygems-2.6.2]# cd [root@198d5512c5ea ~]# |
3.3 替换gem源(还是网络原因,访问官方特别慢)
3.3.1 添加gems.ruby-china.com源,并移除rubygems.org源
1 2 3 4 |
[root@198d5512c5ea ~]# gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ https://gems.ruby-china.com/ added to sources https://rubygems.org/ removed from sources [root@198d5512c5ea ~]# |
3.3.2 列出当前gem源,确保只有gems.ruby-china.com即可
1 2 3 4 5 |
[root@198d5512c5ea ~]# gem sources -l *** CURRENT SOURCES *** https://gems.ruby-china.com/ [root@198d5512c5ea ~]# |
3.4 安装grokdebug
3.4.1 下载并解压grokdebug包
1 2 3 4 5 6 |
[root@198d5512c5ea ~]# mkdir /opt/grokdebug [root@198d5512c5ea ~]# cd /opt/grokdebug/ [root@198d5512c5ea grokdebug]# wget https://codeload.github.com/nickethier/grokdebug/zip/master [root@198d5512c5ea grokdebug]# unzip master [root@198d5512c5ea grokdebug]# mv grokdebug-master/* ./ [root@198d5512c5ea grokdebug]# rm -rf grokdebug-master/ |
3.4.2 安装ruby组件(在grokdebug程序目录下使用ruby config.ru命令根据提示安装相应版本的组件)
例如下面例子中,根据提示安装bundler组件即可
1 2 3 4 5 |
[root@198d5512c5ea grokdebug]# ruby config.ru /usr/local/ruby2.1.7/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler (LoadError) from /usr/local/ruby2.1.7/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' from config.ru:2:in `<main>' [root@198d5512c5ea grokdebug]# |
如果提示的版本号,则需要安装指定版本的组件,如下所示则需要安装cabin-0.5.0这个版本的组件。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@198d5512c5ea grokdebug]# ruby config.ru /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler/spec_set.rb:91:in `block in materialize': Could not find cabin-0.5.0 in any of the sources (Bundler::GemNotFound) from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler/spec_set.rb:85:in `map!' from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler/spec_set.rb:85:in `materialize' from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler/definition.rb:170:in `specs' from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler/definition.rb:237:in `specs_for' from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler/definition.rb:226:in `requested_specs' from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler/runtime.rb:108:in `block in definition_method' from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler/runtime.rb:20:in `setup' from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler.rb:107:in `setup' from /usr/local/ruby2.1.7/lib/ruby/gems/2.1.0/gems/bundler-1.17.3/lib/bundler.rb:114:in `require' from config.ru:4:in `<main>' [root@198d5512c5ea grokdebug]# |
一直安装到提示下面信息即可:
1 2 3 |
[root@198d5512c5ea grokdebug]# ruby config.ru config.ru:10:in `<main>': undefined method `run' for main:Object (NoMethodError) [root@198d5512c5ea grokdebug]# |
正常直接安装下面这些组件即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@198d5512c5ea grokdebug]# gem install bundler [root@198d5512c5ea grokdebug]# gem install cabin-0.5.0 [root@198d5512c5ea grokdebug]# gem install cabin -v=0.5.0 [root@198d5512c5ea grokdebug]# gem install haml -v=3.1.7 [root@198d5512c5ea grokdebug]# gem install jls-grok -v=0.10.10 [root@198d5512c5ea grokdebug]# gem install kgio -v=2.8.0 [root@198d5512c5ea grokdebug]# gem install rack -v=1.4.1 [root@198d5512c5ea grokdebug]# gem install rack-protection -v=1.2.0 [root@198d5512c5ea grokdebug]# gem install raindrops -v=0.11.0 [root@198d5512c5ea grokdebug]# gem install shotgun -v=0.9 [root@198d5512c5ea grokdebug]# gem install tilt -v=1.3.3 [root@198d5512c5ea grokdebug]# gem install sinatra -v=1.3.3 [root@198d5512c5ea grokdebug]# gem install unicorn -v=4.6.3 [root@198d5512c5ea grokdebug]# gem install json -v=1.7.5 |
3.5 启动服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@198d5512c5ea grokdebug]# bundle exec unicorn -p 80 -c ./unicorn I, [2018-12-30T16:05:47.689921 #474] INFO -- : listening on addr=0.0.0.0:80 fd=9 I, [2018-12-30T16:05:47.690760 #474] INFO -- : worker=0 spawning... I, [2018-12-30T16:05:47.696727 #474] INFO -- : worker=1 spawning... I, [2018-12-30T16:05:47.704802 #474] INFO -- : worker=2 spawning... I, [2018-12-30T16:05:47.717920 #476] INFO -- : worker=0 spawned pid=476 I, [2018-12-30T16:05:47.718469 #476] INFO -- : Refreshing Gem list I, [2018-12-30T16:05:47.724540 #474] INFO -- : master process ready I, [2018-12-30T16:05:47.729871 #478] INFO -- : worker=1 spawned pid=478 I, [2018-12-30T16:05:47.736383 #478] INFO -- : Refreshing Gem list I, [2018-12-30T16:05:47.752031 #481] INFO -- : worker=2 spawned pid=481 I, [2018-12-30T16:05:47.766553 #481] INFO -- : Refreshing Gem list I, [2018-12-30T16:05:49.323208 #481] INFO -- : worker=2 ready I, [2018-12-30T16:05:49.341883 #478] INFO -- : worker=1 ready I, [2018-12-30T16:05:49.357702 #476] INFO -- : worker=0 ready |
启动完成之后,直接访问宿主机IP的5555端口即可(如下图所示:可以发现已经能正常打开了,但是页面加载异常缓慢,都出不来)。
3.6 替换掉Google的jquery源(如上面3.5所示,不翻墙基本加载不出来页面)
1 2 3 4 5 6 |
[root@198d5512c5ea ~]# cd /opt/grokdebug/views/ [root@198d5512c5ea views]# sed -i 's#//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js#//lib.sinaapp.com/js/jquery/1.8.1/jquery.min.js#g' index.haml [root@198d5512c5ea views]# sed -i 's#//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js#//lib.sinaapp.com/js/jquery-ui/1.9.2/jquery-ui.min.js#g' index.haml [root@198d5512c5ea views]# sed -i 's#//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js#//lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js#g' patterns.haml [root@198d5512c5ea views]# sed -i 's#//ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/ui-lightness/jquery-ui.css#//lib.sinaapp.com/js/jquery-ui/1.9.0/themes/ui-lightness/jquery-ui.css#g' layout.haml [root@198d5512c5ea views]# sed -i 's#//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js#//lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js#g' discover.haml |
在重新打开一个页面,访问发现可以直接打开了!
3.7 写一个简单的脚本,以后使用直接在外部启动脚本即可
1 2 3 4 5 6 7 8 9 10 |
[root@198d5512c5ea ~]# vi start_grokdebug.sh #!/bin/bash # author: zcy # date: 2018-12-31 # site: https://www.imzcy.cn source /etc/profile cd /opt/grokdebug/ bundle exec unicorn -p 80 -c ./unicorn [root@198d5512c5ea ~]# |
四、保存实验成果!
4.1 根据当前配置好的GrokDebug容器创建一个新的镜像
1 2 3 4 5 6 7 8 |
[root@imzcy ~]# docker commit -a "author:zcy ; site:https://www.imzcy.cn" -m "local grokdebug" GrokDebug grokdebug-zcy:v2 [root@imzcy ~]# [root@imzcy ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE grokdebug-zcy v2 60abc8dd07c2 About a minute ago 922MB centos 7.4.1708 295a0b2bd8ea 2 months ago 197MB [root@imzcy ~]# |
4.2 测试使用生成的镜像创建一个容器,并能正常使用grokdebug工具
1 2 3 4 5 |
[root@imzcy ~]# docker run --name grokdebug -d -p 6666:80 60abc8dd07c2 /bin/bash /root/start_grokdebug.sh [root@imzcy ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1422ef4072a5 grokdebug-zcy:v2 "/bin/bash /root/sta…" 5 seconds ago Up 4 seconds 0.0.0.0:6666->80/tcp grokdebug [root@imzcy ~]# |
五、上传分享
5.1 上传镜像到docker hub
5.1.1 登录docker hub
1 |
[root@imzcy ~]# docker login |
5.1.2 使用 docker tag
命令给刚才生成的镜像打一个标签
1 |
[root@imzcy ~]# docker tag grokdebug-zcy:v2 imzcy/www:20181231-grokdebug |
5.1.3 使用 docker push
命令上传指定标签镜像
1 |
[root@imzcy ~]# docker push imzcy/www:20181231-grokdebug |
5.1.4 再次使用该镜像的时候,直接使用 docker pull
命令从docker hub下载该镜像即可
1 |
[root@imzcy ~]# docker pull imzcy/www:20181231-grokdebug |
5.2 上传镜像到百度云
5.2.1 打包docker镜像为压缩文件,并上传到百度网盘
1 |
[root@imzcy ~]# docker save imzcy/www:20181231-grokdebug -o docker_grokdebug_www.imzcy.cn.tar |
5.2.2 再次使用该镜像的时候,只需要将该压缩包下载然后导入到本地镜像即可
1 2 3 4 5 6 7 8 |
[root@imzcy ~]# docker load -i ./docker_grokdebug_www.imzcy.cn.tar [root@imzcy ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE imzcy/www 20181231-grokdebug 60abc8dd07c2 14 hours ago 922MB [root@imzcy ~]# [root@imzcy ~]# docker run --name grokdebug -d -p 9999:80 60abc8dd07c2 /bin/bash /root/start_grokdebug.sh |
六、常见报错解决方法
6.1 更换gem源的时候报以下错误
1 2 3 4 |
[root@399dc46d0cf5 ~]# gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ Error fetching https://gems.ruby-china.org/: bad response Not Found 404 (https://gems.ruby-china.org/specs.4.8.gz) [root@399dc46d0cf5 ~]# |
解决方法:
1 2 3 |
[root@399dc46d0cf5 ~]# vi ~/.gemrc ssl_verify_mode: 0 [root@399dc46d0cf5 ~]# |
6.2 启动grokdebug程序报以下错误
1 2 3 |
[root@829a52a4ce0f ~]# bundle exec unicorn -p 80 -c ./unicorn bash: bundle: command not found [root@829a52a4ce0f ~]# |
解决方法:
1 2 3 |
[root@829a52a4ce0f ~]# tail -n 1 /etc/profile export PATH=/usr/local/ruby2.1.7/bin:$PATH [root@829a52a4ce0f ~]# source /etc/profile |
6.3 docker已经正常启动,外部也能telnet通端口但是浏览器无法正常打开grokdebug
首先检查下docker内部和外界通信是否正常,如果不正常可以使用命令systemctl restart docker
先重启下docker服务,然后再检查下docker宿主机端口转发配置什么的是否正常!
参考文档:
1 2 3 |
http://blog.51cto.com/fengwan/1758845 https://blog.csdn.net/qq_33588470/article/details/53079293 http://www.runoob.com/docker/docker-tutorial.html |