百味皆苦 java后端开发攻城狮

docker

2022-10-19
百味皆苦

安装

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:登录页面

上一篇 springAi框架

下一篇 Python3基础

Comments

Content