3、环境搭配实战
3.1 配置nginx
#1、搜索
docker search nginx
#2、拉取
docker pull nginx
#3、创建容器并启动
docker run -d --name nginx01 -p 3344:80 nginx #-d后台运行,--name名字,-p3344主机端口:80docker端口
#4、进行测试
curl localhost:3344
#5、进入nginx
docker exec -it nginx01 /bin/bash
端口暴露概念
3.2 配置tomcat
docker run -it --rm tomcat:9.0 #安装,--rm,用来测试,容器用完即删
docker pull tomcat:9.0 #正式安装
docker run -d -p 3355:8080 --name tomcat01 tomcat #启动
docker exec -it tomcat01 /bin/bash #进入容器
#问题,docker的tomcat是不完整版的。阿里云镜像默认是最小的,剔除不必要的,保证最小可运行的环境
cp -r webapps.dist/* webapps #增加目录内文件
3.3 配置es+Kibana
#es 暴露端口很多
#es 十分耗内存
#es 数据需要挂载
#下载启动
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
#启动后linux很卡
docker stats #查看cpu状态
#增加内存限制,修改配置-e
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
#使用kibana连接elstaicsearch
3.4 配置mysql
MySql的数据持久化问题
#查找镜像
docker search mysql
#获取镜像
docker pull mysql
#查看镜像
docker images
#官方配置mysql
#docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
#建立并运行容器,同步文件
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=990625 --name mysql01 mysql
#-d 后台运行;-p 端口映射;-v 目录文件挂载;-e 环境匹配;--name 容器名字
#测试远程连接到mysql,测试映射
#即使将容器删除,挂载到本地的数据卷依旧没有丢失,实现了容器数据持久化功能
3.5 Mysql实现数据共享
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=990625 --name mysql02 --volumes-from musql01
3.6 Tomcat镜像
#1、准备压缩包
#2、编写dockerfile文件,官方命名,Dockerfile,build命令自动识别
FROM centos
MAINTAINER cyyz<1142515845@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD apache-tomcat-9.0.35.tar.gz /usr/local/
ADD jdk-8u251-linux-x64.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_251
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.35
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.35
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.35/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.35/bin/logs/catalina.out
#3、构建镜像
docker build -t mytomcat .
#4、启动镜像
docker run -d -p 9090:8080 --name cyyztomcat -v /home/mytomcat/test:/usr/local/apache-tomcat-9.0.35/webapps/test -v /home/mytomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.35/logs mytomcat
#5、访问测试
curl locahost:9090
#6、发布项目
#编辑文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>
#编辑jsp界面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>this is my first jsp page</title>
</head>
<body>
<h1>Hello cyyz</h1>
<%
System.out.println("简笔轩客");
%>
</body>
</html>
#惊醒测试
3.7 发布镜像
发布镜像到DockerHub
docker login -u xxx -p xxx #登录
docker tag 镜像id cyyz/xxx #tag重命名
docker push cyyz/xxx #提交,提交时按照镜像的层级来提交
发布到阿里云镜像
#查看官网
3.8 redis集群
分片+高可用+集群
#建立自定义网络
docker network create redis --subnet 172.38.0.0/16
#创建脚本文件,配置6个redis
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#1
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#2
docker run -p 6372:6379 -p 16372:16379 --name redis-2 \
-v /mydata/redis/node-2/data:/data \
-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#3
docker run -p 6373:6379 -p 16373:16379 --name redis-3 \
-v /mydata/redis/node-3/data:/data \
-v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#4
docker run -p 6374:6379 -p 16374:16379 --name redis-4 \
-v /mydata/redis/node-4/data:/data \
-v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#5
docker run -p 6375:6379 -p 16375:16379 --name redis-5 \
-v /mydata/redis/node-5/data:/data \
-v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#6
docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#创建集群
docker exec -it redis-1 /bin/sh #查看内容
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1 #创建集群
测试
redis-cli -c #查看信息
cluster nodes #查看节点
set a b #存数据
get a #在从机中获取数据
3.9 Springboot测试
- 构建服务
- 打包应用
- 编写Dockerfile
- 构建镜像
- 发布运行
感谢狂神老师的视频支持点击跳转