windows安装docker
windows docker安装包
这个安装包里面除了docker安装包,还有个wsl2更新包(未报错无需理会)
安装注意:
1、安装之前要开启虚拟化,如果电脑能用的了虚拟机,就代表开过了
2、win10家庭版可能会报WSL 2 installation is incomplete.更新一下wsl2就好了
进入安装界面全勾选,等待安装好直接启动docker desktop(刚刚安装过的),就代表电脑上docker已经启动了
docker上制作镜像
我使用DockerFile来制作,本博客也是受到Docker + goacces实现Nginx离线日志分析
这个博客的启发,我在上面对其改进了一下
1、下载所需资源
搭建需要
(1)goaccess-1.3.tar.gz
(2)nginx-1.10.1.tar.gz
资源可以在网上下载到
2、拿到nginx日志
nginx的日志文件放在logs文件夹里面
叫做access.log
3、制作DockerFlie文件
新建一个txt文件,文件名叫DockerFile
FROM centos:7
ADD goaccess-1.3.tar.gz /var/
ADD nginx-1.10.1.tar.gz /var/
ADD access.log /logs/access.log
RUN mkdir html && \
yum install -y gcc gcc-c++ && \
yum install kde-l10n-Chinese -y && \
yum install glibc-common -y && \
yum install -y GeoIP-devel goaccess-1.3 && \
yum -y install gcc automake autoconf libtool make && \
yum install -y glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-devel && \
yum clean all && \
cd /var/goaccess-1.3 && \
./configure --enable-utf8 --enable-geoip=legacy && \
make && make install && \
cd /var/nginx-1.10.1 && \
./configure && \
make && make install
CMD [ "sh", "-c","cd /usr/local/nginx/sbin/ && ./nginx && cd /logs/ && goaccess /logs/access.log -o /usr/local/nginx/html/index.html --config-file=/var/goaccess-1.3/config/goaccess.conf --time-format='%H:%M:%S' --date-format='%d%b%Y' --log-format=COMBINED --real-time-html "]
将上述文本复制进去,然后将文件后缀删除
4、制作镜像
1、启动之前安装的docker
2、打开电脑的cmd
3、输入docker images确认一下是否能操作docker了
4、将之前准备的文件放入同一文件夹
5、控制台输入
docker build -t 镜像名 -f 路径(我的是C:\nginx_goacces\DockerFile) .
建议路径不要有中文,等他自己下好就能使用了
5、使用镜像
5.1、外网环境
直接生成容器
docker run -dit -p 8089:80 --name goaccess goaccess
访问localhost:8089(我这个是汉化过的,本来是英文)
5.2、内网环境
内网环境一般是没有网的,制作镜像需要通过网络下载需要的文件,所以内网环境无法生成镜像,必须得我们手动把外网制作好的镜像,手动导入内网环境中
docker save -o 存放路径\名字.tar 镜像名:版本
例:
docker save -o C:\nginx_goacces\goaccess.tar goaccess:latest
在完成之后,在上述存放路径中找到该文件,将其放入内网
执行导入
docker load -i 路径/名字.tar
例
docker load -i C:\nginx_goacces\goaccess.tar
然后根据外网步骤运行即可
汉化
界面是英文的看起来很难受,所以做一下汉化
DockerFile里面已经包含了中文包,我们的centos7原本是没有中文的
在容器启动了之后,进入容器内部
docker exec -it [CONTAINER ID] /bin/bash
例
docker exec -it 79b2a6dc346a /bin/bash
进入容器之后
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 (设置系统语言包)
LANG="zh_CN.utf-8" bash -c "goaccess logs/access.log -o /usr/local/nginx/html/index.html --log-format=COMBINED"
第二行命令可以自由更改
LANG="zh_CN.utf-8" bash -c "goaccess 日志位置 -o 首页位置 --log-format=COMBINED"
然后刷新一下页面即可汉化
更换日志
我们通过从外部导入日志至容器中
docker cp 本机日志路径 容器id:/logs
例
docker cp C:\nginx_goacces\access.log 79b2a6dc346a:/logs
此时日志是未被汉化的,再执行一次汉化即可