- 安装
- 防火墙
- 基本命令
- 安装Tomcat
- 安装MySQL
- 安装Redis
- 安装MongoDB
- 安装nginx
- 安装rabbitMQ
- 安装zookeeper
- 安装nacos
- 安装elasticsearch
- 安装kibana
- 安装logstash
- 输出日志到ELK
- 部署运行jar
- 安装maven私服nexus3
安装
1:切换管理员
su root
2:安装gcc
yum -y install gcc
yum -y install gcc-c++
3:卸载旧版本
yum -y remove docker docker-common docker-selinux docker-engine
4:安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
5:设置仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
6:更新软件包索引
yum makecache fast
7:安装docker ce
yum -y install docker-ce
8:配置镜像加速
创建docker配置文件夹
mkdir -p /etc/docker
编写镜像加速内容
vim /etc/docker/daemon.json
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
#网易云
{"registry-mirrors": ["http://hub-mirror.c.163.com"] }
#阿里云
{
"registry-mirrors": ["https://{登陆自己的阿里云账号查看自己的编码}.mirror.aliyuncs.com"]
}
重新加载docker配置
systemctl daemon-reload
重启Docker
systemctl restart docker
验证镜像是否生效
docker info
9:卸载
systemctl stop docker # 停止docker进程
yum -y remove docker-ce # 删除Docker-ce
rm -rf /var/lib/docker # 彻底删除docker所有内容.
防火墙
命令
查看防火墙是否开启
$ systemctl status firewalld
开启或关闭防火墙
$ systemctl start firewalld
$ systemctl stop firewalld
查看所有开启的端口
$ firewall-cmd --list-ports
开启2181端口
$ firewall-cmd --zone=public --add-port=2181/tcp --permanent
重启防火墙,使其生效
$ firewall-cmd --reload
基本命令
启动docker
systemctl start docker
设置服务自动启动
查看已启动的服务
systemctl list-units --type=service
查看是否设置开机启动
systemctl list-unit-files | grep enable
设置开机启动
systemctl enable docker.service
关闭开机启动
systemctl disable docker.service
查看docker信息
docker version
docker info
docker --help
查看本机所有镜像
docker images 列出本地主机上的镜像
OPTIONS说明:
-a :列出本地所有的镜像(含中间映像层)
-q :只显示镜像ID。
–digests :显示镜像的摘要信息
–no-trunc :显示完整的镜像信息
各个选项说明:
REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小 同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。 如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
查看镜像版本
docker image inspect (docker image名称):latest | grep -i version |
例子:docker image inspect redis:latest | grep -i version |
搜索镜像
docker search 对于网站:https://hub.docker.com
docker search [OPTIONS] 镜像名字
OPTIONS说明:
–no-trunc : 显示完整的镜像描述 -f : 过滤,后面跟过滤的条件 –automated : 只列出 automated build类型的镜像;
下载镜像
docker pull 镜像名字[:TAG]:下载镜像
删除镜像
docker rmi 某个XXX镜像名字ID
删除单个:docker rmi -f 镜像ID
删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部:docker rmi -f $(docker images -qa)
新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS说明(常用):有些是一个减号,有些是两个减号
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射 ip:hostPort:containerPort ip::containerPort hostPort:containerPort containerPort
查看容器的启动命令
1:安装runlike
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
pip install runlike
2:查看容器启动时的命令
runlike -p mykibana
启动容器
docker start 容器ID或者容器名
容器自动启动
启动时加--restart=always
no 不自动重启容器. (默认value)
on-failure 容器发生error而退出(容器退出状态不为0)重启容器
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
如果已经启动的项目,则使用update更新:
docker update --restart=always 容器id或name
容器重命名
docker rename 旧容器名或ID 新容器名
重启容器
docker restart 容器ID或者容器名
停止容器
docker stop 容器ID或者容器名
docker kill 容器ID或者容器名: 关闭当前容器并退出
退出容器
exit:容器停止退出
ctrl+Q容器不停止退出 (如果快捷键不起作用,则尝试切换输入法后再从新执行)
删除已停止的容器
docker rm 容器ID
一次性删除多个容器:
- docker rm -f $(docker ps -a -q)
-
docker ps -a -q xargs docker rm
列出正在运行的容器
docker ps [OPTIONS]
OPTIONS说明(常用):
- -a :列出当前所有正在运行的容器+历史上运行过的
- -l :显示最近创建的容器。
- -n:显示最近n个创建的容器。
- -q :静默模式,只显示容器编号。
- –no-trunc :不截断输出。
查看容器日志
docker logs -f -t –tail 容器ID
选项:
- -t 是加入时间戳
- -f 跟随最新的日志打印
- –tail 数字 显示最后多少条
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
进入正在运行的容器
docker exec -it 容器ID bashShell
重新进入:docker attach 容器ID
上述两个区别:
- attach 直接进入容器启动命令的终端,不会启动新的进程
- exec 是在容器中打开新的终端,并且可以启动新的进程
容器拷贝内容
docker cp 容器ID:容器内路径 目的主机路径
1.运行容器
docker run 镜像名/id -------------------------- 镜像名或id新建并启动容器
--name 别名为容器起一个名字
-d 启动守护式容器(在后台启动容器)
-p 映射端口号:宿主机端口号:容器内端口号(-p可以写多个)
-e Set environment variables, e.g. mysql: username, passwod
例:
注意:这些选项没有先后之分
docker run -p 8080:8080 tomcat 映射端口号
docker run -p 8080:8080 -d tomcat 后开启的容器
docker run -p 8080:8080 -d --name myTomcat tomcat 为容器起别名
docker run -d --name myTomcat -P tomcat 随机端口映射,容器内部端口随机映射到主机的端口
2.查看运行的容器
docker ps -------------------------- 列出所有"正在运行"的容器
-a 正在运行的和历史运行过的容器
-q 静默模式,只显示容器编号
3.停止|关闭|重启|暂停容器
docker start 容器名字/容器id --------------- 开启容器
docker restart 容器名/容器id --------------- 重启容器
docker stop 容器名/容器id ------------------ 正常停止容器运行
docker kill 容器名/容器id ------------------ 立即停止容器运行
docker pause 容器名/容器id ------------------ 暂停容器运行
docker unpause 容器名/容器id ------------------ 恢复容器运行
docker stop $(docker ps -a -q) ------------------ stop停止所有容器
4.删除容器
docker rm 容器名/容器id -------------------------- 删除已停止的容器
docker rm -f 容器名/容器id -------------------------- 强制删除容器
docker rm -f $(docker ps -aq) -------------------------- 删除所有容器
5.查看容器内进程
docker top 容器id或者容器名 ------------------ 查看容器内的进程
6.查看查看容器内部细节
docker inspect 容器id ------------------ 查看容器内部细节
7.查看容器的运行日志
docker logs [OPTIONS] 容器id或容器名 ------------------ 查看容器日志
-t 加入时间戳(容器外部/宿主机时间)
-f 实时日志
--tail 数字 显示最后多少条
8.进入容器内部
docker exec [options] 容器id 容器内命令 ------------------ 进入容器执行命令
-i 以交互模式运行容器,通常与-t一起使用
-t 分配一个伪终端 shell窗口 bash
例:
docker exec -it myTomcat bash 进入容器内部,并使用bash进行交互
exit 退出交互
9.容器和宿主机之间复制文件
docker cp 文件|目录 容器id:容器路径 ----------------- 将宿主机复制到容器内部
docker cp 容器id:容器内资源路径 宿主机目录路径 ----------------- 将容器内资源拷贝到主机上
10.数据卷(volum)实现与宿主机共享目录
docker run -v 宿主机的路径|任意别名:/容器内的路径 镜像名
注意:
1.如果是宿主机路径必须是绝对路径,宿主机目录会覆盖容器内目录内容
2.如果是别名则会在docker运行容器时自动在宿主机中创建一个目录,并将容器目录文件复制到宿主机中
11.打包镜像(备份)
docker save 镜像名:tag -o 名称.tar
12.载入镜像(恢复)
docker load -i 名称.tar
13.容器打包成新的镜像
docker commit -m "描述信息"(optional) -a "作者信息"(optional) 容器id或者名称 打包的镜像名称:标签
例:
docker commit -m "deploy demo project in tomcat" -a "me" 9f2 tomcat-test:8.0
安装Tomcat
1:步骤
1:下载镜像
docker pull tomcat
2:启动镜像,8080端口映射到外部8888,后台启动,名字为mytomcat
docker run -p 8888:8080 -d --name mytomcat tomcat
3:进入容器内部
docker exec -it mytomcat /bin/bash
4:安装vim
apt-get update
这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
上面的命令执行完,然后输入命令 apt-get install vim,待它执行完,就大功告成了。
5:进入webapps目录内新建一个html
6:退出容器
exit
7:访问链接,欧克
2:部署war项目
新建目录
mkdir -p /usr/local/docker/tomcat/webapps
1:创建容器,挂载目录
docker run -di --name=mytomcat2 -p 8889:8080 -v /usr/local/docker/tomcat/webapps:/usr/local/tomcat/webapps tomcat
创建容器 -p表示地址映射 -v目录挂载,方便我们部署,让数据持久化
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷,下面的命令我完全解释一下,创建一个名字为mytomcat2的容器,并且端口8889端口映射8080端口,其中8889端口是我们外部访问的端口,8080是容器内tomcat的端口。-v表示的目录挂载就是我的宿主机/usr/local/docker/tomcat/webapps下面的内容和我的tomcat容器下usr/local/tomcat/webapps里面的内容保持一致,就是在宿主机下对里面的文件进行的操作也会同步到mytomcat2
2:访问webapps下面的项目就可以了
安装MySQL
步骤
1:下载镜像
docker pull mysql:5.7
新建目录
mkdir -p /usr/local/docker/mysql/conf
mkdir -p /usr/local/docker/mysql/data
mkdir -p /usr/local/docker/mysql/logs
2:启动容器
docker run -d -p 3306:3306 -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
1.-v /usr/local/docker/mysql/logs:/logs(日志文件挂载)
将容器中的日志文件夹挂载到主机对应的/usr/local/docker/mysql/logs文件夹中
2.-v /usr/local/docker/mysql/data:/var/lib/mysql(数据文件挂载)
将容器中的数据文件夹挂载到主机对应的/usr/local/docker/mysql/data文件夹中
3.-v /usr/local/docker/mysql/conf:/etc/mysql/conf.d(配置文件挂载)
将容器的配置文件夹挂载到主机对应的/usr/local/docker/mysql/conf文件夹中
3:用Navicat测试连接
安装Redis
步骤
1:下载镜像
docker pull redis:3.2
创建目录
mkdir -p /usr/local/docker/myredis/data
mkdir -p /usr/local/docker/myredis/conf/redis.conf
2:启动镜像
docker run --name myredis -p 26379:6379 -v /usr/local/docker/myredis/data:/data -v /usr/local/docker/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
-p 表示地址映射,是将自己服务器上的26379端口映射到容器的6379端口,对外暴露26379端口,使用户通过对外暴露的26379端口访问redis容器内部的服务。
-v 表示目录挂载,这里需要注意一点redis.conf是一个文件夹。
-d 后台启动,以上启动了redis 和redis-server ,对于redis-server /usr/local/etc/redis/redis.conf 表示的是在启动redis-server时,使用的是 /usr/local/etc/redis/redis.conf目录下的文件
--appendonly yes开启redis的aop,表示的数据的持久化
3:修改配置文件
docker 镜像reids 我们是找不到redis.conf这个配置文件的,我们如果想自定义,就要从官网下载你的redis.conf文件,然后复制里面的内容
https://raw.githubusercontent.com/redis/redis/7.0/redis.conf
4:客户端启动
docker exec -it myredis redis-cli
5:测试设置值
set k1 v1
6:测试持久化是否生效
shutdown
去本地数据文件夹中看是否有rdb和aof文件
7:重启redis
docker start myredis
安装MongoDB
步骤
1:下载镜像
docker pull mongo
2:创建数据持久化目录
mkdir -p /usr/local/docker/mongo/data
3:启动镜像
docker run -d --name mymongo --restart always --privileged -p 27017:27017 -v /usr/local/docker/mongo/data:/data/db -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo --auth
4:测试连接
用户名:root
密码:123456
5:进入容器内部
docker exec -it mymongo bash
6:登陆MongoDB
mongosh --port 27017 -u "root" -p "123456"
安装nginx
步骤
1:下载镜像
docker search nginx
docker pull nginx
2:本地新建挂载目录
mkdir -p /usr/local/docker/nginx
mkdir -p /usr/local/docker/nginx/conf
mkdir -p /usr/local/docker/nginx/html
mkdir -p /usr/local/docker/nginx/logs
3:复制挂载目录
docker cp mynginx:/etc/nginx/nginx.conf /usr/local/docker/nginx
docker cp mynginx:/etc/nginx/conf.d/ /usr/local/docker/nginx/conf
docker cp mynginx:/usr/share/nginx/html/ /usr/local/docker/nginx/html
docker cp mynginx:/var/log/nginx/ /usr/local/docker/nginx/logs
4:启动nginx并挂载目录
docker run --name mynginx -m 200m -p 80:80 \
-v /usr/local/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/logs:/var/log/nginx \
-v /usr/local/docker/nginx/html:/usr/share/nginx/html \
-v /usr/local/docker/nginx/conf:/etc/nginx/conf.d \
-e TZ=Asia/Shanghai \
--privileged=true -d nginx
配置反向代理default.conf
server {
#监听80端口
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
# 访问localhost:80就会转发到/usr/share/nginx/html下的index.html
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 匹配任何以 /gateway/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条
# 访问url路径localhost:80/gateway/api经过nginx反向代理后,到达后端服务的实际url地址为http://10.165.46.12:8080/api。
location ^~/gateway/{
# 转发地址,这里必须写IP
proxy_pass http://10.165.46.12:8080/;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
安装rabbitMQ
步骤
1:下载镜像
docker pull rabbitmq
2:启动镜像
docker run -di --name=myrabbitmq -p 5671:5617 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq
3:进入容器内部
docker exec -it myrabbitmq /bin/bash
4:下载插件
rabbitmq-plugins enable rabbitmq_management
5:现在可以通过访问http://linuxip:15672,访问web界面,这里的用户名和密码默认都是guest
6:输入命令:exit退出容器目录
安装zookeeper
步骤
1:下载镜像
docker pull zookeeper
2:创建 bridge 网络
#创建自定义网络
docker network create --driver bridge --subnet 172.0.0.0/16 zk_network
#查看已存在网络
docker network ls
创建目录
mkdir -p /usr/local/docker/myzookeeper/data
mkdir -p /usr/local/docker/myzookeeper/log
3:启动镜像
docker run -d --name myzookeeper \
-p 2181:2181 -p 2888:2888 -p 3888:3888 \
-v /usr/local/docker/myzookeeper/data:/data \
-v /usr/local/docker/myzookeeper/log:/datalog zookeeper
4:进入容器
docker exec -it myzookeeper /bin/bash
5:连接服务
$ cd bin # 进入bin目录
$ ./zkCli.sh
安装nacos
步骤
1:下载镜像
docker pull nacos/nacos-server
2:下载数据库文件并创建数据库
https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql
3:创建 nacos 配置存放目录
mkdir -p /usr/local/docker/nacos/conf && chown -R 200 /usr/local/docker/nacos/conf
创建 nacos 日志存放目录
mkdir -p /usr/local/docker/nacos/logs && chown -R 200 /usr/local/docker/nacos/logs
创建 nacos 数据存放目录
mkdir -p /usr/local/docker/nacos/data && chown -R 200 /usr/local/docker/nacos/data
4:启动nacos
docker run -d -p 8848:8848 \
--name mynacos \
--env MODE=standalone \
--env SPRING_DATASOURCE_PLATFORM=mysql \
--env MYSQL_SERVICE_HOST=172.0.0.1 \
--env MYSQL_SERVICE_PORT=3306 \
--env MYSQL_SERVICE_DB_NAME=nacos \
--env MYSQL_SERVICE_USER=root \
--env MYSQL_SERVICE_PASSWORD=123456 \
nacos/nacos-server:latest
5:把容器中的 nacos 文件复制出来
docker cp -a mynacos:/home/nacos /usr/local/docker/
6:删除 nacos 容器
docker rm -f mynacos
7:自定义启动
docker run -d -p 8848:8848 \
--name mynacos \
--env MODE=standalone \
--env SPRING_DATASOURCE_PLATFORM=mysql \
--env MYSQL_SERVICE_HOST=172.0.0.1 \
--env MYSQL_SERVICE_PORT=3306 \
--env MYSQL_SERVICE_DB_NAME=nacos \
--env MYSQL_SERVICE_USER=root \
--env MYSQL_SERVICE_PASSWORD=123456 \
-v /usr/local/docker/nacos/conf:/home/nacos/conf \
-v /usr/local/docker/nacos/logs:/home/nacos/logs \
-v /usr/local/docker/nacos/data:/home/nacos/data \
nacos/nacos-server:latest
8:访问控制台
http://192.168.37.128:8848/nacos
账号nacos
密码nacos
安装elasticsearch
步骤
1:下载镜像
docker pull elasticsearch:7.12.0
2:创建挂载目录文件
mkdir -p /usr/local/docker/elasticsearch/data
mkdir -p /usr/local/docker/elasticsearch/config
mkdir -p /usr/local/docker/elasticsearch/plugins
3:在config文件夹下创建 elasticsearch.yml文件 内容:http.host: 0.0.0.0注意此处冒号有空格
echo "http.host: 0.0.0.0" >> /usr/local/docker/elasticsearch/config/elasticsearch.yml
sudo chmod -R 777 /usr/local/docker/elasticsearch/
4:启动镜像
docker run --name myelasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms84m -Xmx512m" -v /usr/local/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /usr/local/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d --restart=always elasticsearch:7.12.0
5:查看启动详情
docker ps 查看是否启动
docker logs myelasticsearch 启动日志查询
docker restart myelasticsearch 重启
docker exec -it myelasticsearch bash 进入
6:访问
127.0.0.1:9200
7:安装es-head界面
docker pull mobz/elasticsearch-head:5
8:修改es的配置文件elasticsearch.yml
network.host: 0.0.0.0 #使用的网络
http.cors.enabled: true #跨域配置
http.cors.allow-origin: "*"
xpack.security.enabled: true #开启密码配置
http.cors.allow-headers: Authorization
xpack.security.transport.ssl.enabled: true
9:重启es服务
docker restart myelasticsearch
10:启动es-head
docker run -d --name es-head -p 9100:9100 docker.io/mobz/elasticsearch-head:5
11:进入es-head容器修改配置
docker exec -it es-head bash
find -name 'vendor.js'
apt-get update
apt-get install vim
vi +6886 ./_site/vendor.js
vim +7573 ./_site/vendor.js
修改contentType为 application/json;charset=UTF-8
12:访问es-head
127.0.0.1:9100
13:设置es密码
docker exec -it myelasticsearch /bin/bash
./bin/elasticsearch-setup-passwords interactive
14:重启服务
docker restart myelasticsearch
es-head使用:https://www.freesion.com/article/55321116375/
安装kibana
步骤
1:下载镜像
docker pull kibana:7.12.0
2:创建挂载目录
mkdir -p /usr/local/docker/kibana/data
mkdir -p /usr/local/docker/kibana/config
3:在config下创建配置文件kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.37.128:9200"] #es地址;
i18n.locale: "zh-CN" #汉化
elasticsearch.username: "elastic" # 设置es账号密码
elasticsearch.password: "123456"
xpack.encryptedSavedObjects.encryptionKey: "fhjskloppd678ehkdfdlliverpoolfcr" # 任意不少于32位的字符即可
4:启动容器
docker run --name mykibana -d -p 5601:5601 -v /usr/local/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml -v /usr/local/docker/kibana/data:/usr/share/kibana/data kibana:7.12.0
5:访问链接
localhost:5601
安装logstash
步骤
1:下载镜像
docker pull logstash:7.12.0
2:创建目录和配置文件logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.37.128:9200" ] # es地址
xpack.monitoring.elasticsearch.username: "elastic" # es账号
xpack.monitoring.elasticsearch.password: "123456" # es密码
3:创建logstash.conf
# 数据输入配置
input {
# 从TCP套接字读取数据
tcp {
mode => "server"
host => "0.0.0.0"
port => 5044 # 每个输入源都可以使用不同的端口号
codec => json_lines
}
}
# 数据处理配置
# 数据输出配置
output {
elasticsearch {
hosts => ["http://192.168.37.128:9200"] # es的地址和端口,不能写localhost或者127.0.0.1,可以写内网(或公网)地址
user => "elastic" # es的账号密码
password => "123456" # es的账号密码
index => "all-log-%{+YYYY.MM.dd}" # 索引(自定义即可,因为想要按天分索引,所以后面使用变量%{+YYYY.MM.dd})
}
}
4:启动镜像
docker run -d --name mylogstash -p 5044:5044 -v /usr/local/docker/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /usr/local/docker/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash:7.12.0
输出日志到ELK
pom
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>7.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
创建logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty name="appName" scope="context" source="spring.application.name"/>
<springProperty name="serverPort" scope="context" source="server.port" defaultValue="0000"/>
<property name="pattern"
value="${appName}:${serverPort} %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%X{traceId}] %thread %logger{50}:%L %msg%n"/>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${pattern}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<!--配置logstash 发送日志数据的地址 -->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--logstash ip和暴露的端口,logback就是通过这个地址把日志发送给logstash-->
<destination>192.168.37.128:5044</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="INFO">
<appender-ref ref="consoleAppender"/>
<appender-ref ref="LOGSTASH"/>
</root>
</configuration>
启动类
@Slf4j
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
log.info("demo项目启动啦!!!");
log.info("咿呀咿呀哟");
log.info("啊哈哈哈哈哈");
log.info("滴滴答答的点");
}
}
到kibana中创建索引索引模式;选全部日志;到discover中就能看到打印的日志了
部署运行jar
步骤
1:下载安装jdk
docker pull justrydeng/jdk8
2:创建临时目录
mkdir -p /usr/local/dockerfile/demo
3:拷贝项目jar到临时目录下
4:在临时目录下编写Dockerfile文件
FROM justrydeng/jdk8
VOLUME /tmp
COPY *.jar demo.jar
ENTRYPOINT ["java","-jar","/demo.jar"]
5:生成镜像
docker build -t demo:v1 .
6:查看生成的镜像
docker images
7:启动镜像
docker run --name demo --restart=always -d -p 8080:8080 demo:v1
8:查看容器状态
docker ps
9:浏览器访问项目地址
安装maven私服nexus3
步骤
1:下载镜像
docker pull sonatype/nexus3
2:创建挂载目录
mkdir -p /usr/local/docker/nexus3/nexus-data
chmod 777 /usr/local/docker/nexus3/
3:启动容器(占内存严重,这里限制了内存)
docker run -d -e "INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs -Dstorage.diskCache.diskFreeSpaceLimit=512" --name nexus3 -p 8088:8081 -v /usr/local/nexus3/nexus-data/:/nexus-data -v /etc/timezone:/etc/timezone:ro sonatype/nexus3
4:初始账号为admin
5:去容器中获取初始密码
docker exec -it nexus3
vi /nexus-data/admin.password
6:登录页面