3、docker环境搭配实战

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

端口暴露概念

image-20200608155441791

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

image-20200608190015526

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集群

分片+高可用+集群

image-20200611093658447

#建立自定义网络
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	#创建集群

image-20200611104145296

image-20200611104257688

测试

redis-cli -c 	#查看信息
cluster nodes 	#查看节点

set a b 	#存数据
get a 	#在从机中获取数据

image-20200611104828661

3.9 Springboot测试
  1. 构建服务
  2. 打包应用
  3. 编写Dockerfile
  4. 构建镜像
  5. 发布运行

感谢狂神老师的视频支持点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值