CGB2005 1013 SpringCloud11 Docker案例 eureka部署到springboot

上午
SQL案例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一步 创建docker虚拟网络

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二步 运行mysql服务并设置

在这里插入图片描述

第三步 新建或查看本机(window的)数据库

安装
cd ~/docker-install
​
# 安装
rpm -ivh *.rpm
​
# 启动 docker 系统服务
systemctl start docker
# 启用 docker 系统服务
systemctl enable docker
​
 

容器命令
 

# -d 后台运行
docker run -d redis
​
# 进入 redis 容器,在容器中运行 redis-cli
docker exec -it a48 redis-cli
​
# 容器列表
# 列出正在运行的容器
docker ps
# 列出所有容器,包括已经关闭的容器
docker ps -a
​
# 删除容器
# 删除已停止的容器
docker rm xxx
# 强制删除运行的容器
docker rm -f xxx
​
# 清空所有已停止的容器
docker container prune
​
# 启动redis容器
# -d 后台  --name 起名字  --rm 容器停止时自动删除
docker run \
-d \
--name redis1 \
--rm \
redis
​
# 进入容器,在容器中执行命令
docker exec -it redis1 ls
docker exec -it redis1 pwd
​
docker exec -it redis1 touch f1.txt
docker exec -it redis1 ls
​
# 在容器中启动命令行
docker exec -it redis1 bash
​
# 停止容器内运行的 redis 服务
# 容器中没有任何应用运行时,会自动退出
docker exec -it redis1 redis-cli shutdown
​
# 容器启动时,默认运行的命令
docker history redis
​
# 启动容器时,手动指定命令,替代默认命令
docker run -it --name redis1 --rm redis \
ls
​
docker run -it --name redis1 --rm redis \
pwd
​
docker run -it --name redis1 --rm redis \
bash
​
​
# docker stop
# docker start
# docker restart
docker run \
-d \
--name redis1 \
redis
​
docker exec -it redis1 redis-cli
> set a b
> exit
​
docker stop redis1
docker restart redis1
docker exec -it redis1 redis-cli
> get a
"b"
 

数据挂载
# 新建文件夹 /opt/data
mkdir /opt/data
# 启动redis容器,挂载目录 -v 宿主机路径:容器挂载路径
docker rm -f redis1
​
docker run \
-d --name redis1 \
-v /opt/data:/data \
redis
​
# 访问redis添加数据
docker exec -it redis1 redis-cli
> set a b
> save
> exit
​
# 查看宿主机 /opt/data 下有没有快照文件
cd /opt/data
ls
​
# 删除后,重启容器
docker rm -f redis1
​
docker run \
-d --name redis1 \
-v /opt/data:/data \
redis
​
docker exec -it redis1 redis-cli
> get a
"b"
 

# 新建数据卷
docker volume create redis-data
​
# 查看数据卷
docker volume ls
​
# 查看对应的路径
# /var/lib/docker/volumes/redis-data/_data
docker inspect redis-data
​
# 启动redis容器,将 redis-data 数据卷挂载到容器
docker run -d --name redis2 \
-v redis-data:/data \
redis
​
# 访问 reids 添加数据
docker exec -it redis2 redis-cli
> set a b
> save
> exit
​
# 查看宿主机存储的redis快照文件
cd /var/lib/docker/volumes/redis-data/_data
ls
​
 

端口映射
# 启动 tomcat 容器,8080端口映射到宿主机的 8001 端口
# -p 8001:8080
# --restart=always 总是自动重新启动这个容器
docker run -d --name tomcat1 \
-p 8001:8080 \
--restart=always \
tomcat
​
docker ps
​
# 用浏览器访问宿主机 1508001端口
http://192.168.64.150:8001
 

容器互联
# 创建虚拟网络
docker network create my-net
​
# 查看网络
docker network ls
docker inspect my-net
​
# 查看宿主机的虚拟网卡
ifconfig
​
# 启动centos:7容器: app1 和 app2
docker run -dit --name app1 --rm \
--net my-net \
centos:7
​
docker run -dit --name app2 --rm \
--net my-net \
centos:7
​
# 描述两个容器,查看ip地址
docker inspect app1
docker inspect app2
​
# 从宿主机 ping 两个容器
ping 172.18.0.2
ping 172.18.0.3
​
# 进入 app1,ping 宿主机和 app2
docker exec -it app1 ping 172.18.0.1
docker exec -it app1 ping 172.18.0.3
docker exec -it app1 ping app2
 

Dockerfile 构建镜像
# 准备文件
# 把要使用的文件,单独放到一个文件夹下
cd ~/
mkdir tomcat7
​
cd tomcat7
​
# 生成 Dockerfile 文件
cat <<EOF >Dockerfile
FROM centos:7
ADD jdk-8u212-linux-x64.tar.gz /opt/
ADD apache-tomcat-7.0.96.tar.gz /usr/
RUN mv /usr/apache-tomcat-7.0.96 /usr/tomcat
ENV JAVA_HOME=/opt/jdk1.8.0_212 \
    CATALINA_HOME=/usr/tomcat \
    PATH=$PATH:/opt/jdk1.8.0_212/bin:/usr/tomcat/bin
EXPOSE 8080
ENTRYPOINT /usr/tomcat/bin/startup.sh && tail -F /usr/tomcat/logs/catalina.out
EOF
​
# 课前资料\docker\tomcat7\
# 上传 jdk 和 tomcat7 的压缩文件到 /root/tomcat7/
​
​
docker build -t tomcat:7 .
 

# 准备文件
mkdir -p /opt/webapps/ROOT/
​
# 创建 index.html
cat <<EOF >/opt/webapps/ROOT/index.html
<h1>Hello Docker!</h1>
EOF
​
# 启动容器
docker run -d --name tomcat80 \
--restart=always \
-v /opt/webapps:/usr/tomcat/webapps \
-p 80:8080 \
tomcat:7
​
# 用浏览器访问
http://192.168.64.150
 

redis
docker run -d --name redis7000 \
-p 7000:6379 redis
​
docker run -d --name redis7001 \
-p 7001:6379 redis
​
docker run -d --name redis7002 \
-p 7002:6379 redis
​
docker exec -it redis7000 redis-cli
> keys *
 

数据库和web应用
# 删除 my-net 网络
docker network rm my-net
# 创建虚拟网络 dockernet
docker network create dockernet --subnet=172.18.0.0/24
​
docker network ls
​
# 创建 mysql-data 数据卷
docker volume create mysql-data
docker volume ls
​
​
# 启动 mysql 容器
docker run -d --name mysql \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
--restart=always \
mariadb

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先删再建
在这里插入图片描述

第四步 挂载web web应用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

web就是tomcat服务

如下图 启动服务的时候 先创建文件夹 挂载映射 再启动服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如上图 可以映射访问了

docker部署eureka

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自我实现 构建镜像成功

在这里插入图片描述
在这里插入图片描述
10.33晚上 构建规范 为什么是-t tedu/jdk:8u212 .
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后面接着写自己指定的文件夹
在这里插入图片描述
在这里插入图片描述

正式部署eureka

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
写错了 删除 并重新构建

# 准备文件
cd ~/
mkdir eureka
cd eureka
​
cat <<EOF >Dockerfile
FROM tedu/jdk:8u212
COPY sp05-eureka-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp05-eureka-0.0.1-SNAPSHOT.jar"]
CMD ["--spring.profiles.active=eureka1", "--server.port=2001"]
EOF
​
# 上传 erueka 的 jar 文件到 /root/eureka/
# DevOps课前资料\kubernetes\k8s案例\v2\eureka\sp05-eureka-0.0.1-SNAPSHOT.jar
​
docker rmi tedu/eureka:v1
​
docker build -t tedu/eureka:v1 .

在这里插入图片描述

镜像也有了 启动eureka注册中心 启动eureka容器

eureka完全独立的

在这里插入图片描述

自我实现

在这里插入图片描述
http://192.168.64.150:2001/
在这里插入图片描述

得连接到同一个虚拟网络
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自我实现
在这里插入图片描述
如下图 eureka2
在这里插入图片描述
在这里插入图片描述

docker rm -f eureka1 eureka2
​
docker run -d --name eureka1 \
-p 2001:2001 \
--net dockernet \
tedu/eureka:v1
​
# 查看容器日志
docker logs eureka1
​
​
docker run -d --name eureka2 \
-p 2002:2002 \
--net dockernet \
tedu/eureka:v1 \
java -jar /opt/sp05-eureka-0.0.1-SNAPSHOT.jar \
--spring.profiles.active=eureka2 --server.port=2002
​
docker logs eureka2
 

访问网页
http://192.168.64.150:2001/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

k8s Kubernetes

之前需要自己构建镜像 还得自己部署 那就死掉了 这么多服务器

Kubernetes是自动部署 复活程序员

在这里插入图片描述

安装kubernetes集群 容器化部署

kubernetes的安装过程极其复杂,对Linux运维不熟悉的情况下安装kubernetes极为困难,再加上国内无法访问google服务器,我们安装k8s就更加困难

kubeasz项目(https://github.com/easzlab/kubeasz)极大的简化了k8s集群的安装过程,使我们可以离线一键安装k8s集群

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下午

在这里插入图片描述

cd ~/

# 下载 kubeasz 的自动化安装脚本文件: easzup,如果已经上传过此文件,则不必执行这一步
export release=2.2.0
curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup

# 对easzup文件设置执行权限
chmod +x ./easzup

# 下载离线安装文件,并安装配置docker,
# 如果离线文件已经存在则不会重复下载,
# 离线安装文件存放路径: /etc/ansible
./easzup -D

# 启动kubeasz工具使用的临时容器
./easzup -S

# 进入该容器
docker exec -it kubeasz sh

# 下面命令在容器内执行
# 配置离线安装
cd /etc/ansible
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' roles/chrony/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' roles/ex-lb/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' roles/kube-node/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' roles/prepare/defaults/main.yml
exit

# 安装 python,已安装则忽略这一步
yum install python -y

配置好master主机之后

在这里插入图片描述

克隆

在这里插入图片描述
在这里插入图片描述

自我实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
继续

在这里插入图片描述

在这里插入图片描述

配置集群的IP

在这里插入图片描述
在这里插入图片描述

主控 工作机全开 # 检查集群主机状态

在这里插入图片描述

一键安装k8s集群

在这里插入图片描述
在这里插入图片描述
继续

在这里插入图片描述
在这里插入图片描述
自我实现 查看集群的核心服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

初步尝试k8s

使用 ReplicationController 和 pod 部署应用
Pod是用来封装Docker容器的对象,它具有自己的虚拟环境(端口, 环境变量等),一个Pod可以封装多个Docker容器.

RC是用来自动控制Pod部署的工具,它可以自动启停Pod,对Pod进行自动伸缩.

下面我们用命令部署一个RC
在这里插入图片描述

在这里插入图片描述
从镜像启动容器

测试k8s

在这里插入图片描述
在这里插入图片描述
kubectl run 几个参数的含义

--image=luksa/kubia
镜像名称
--port=8080
pod 对外暴露的端口
--generator=run/v1 kubia
创建一个ReplicationController

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
控制器自动分配
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
内部打印的 查看一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

k expose \
    rc kubia \
    --type=NodePort \
    --name kubia-http

k get svc
------------------------------------------------------------------------------
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubia-http   NodePort    10.68.194.195   <none>        8080:20916/TCP   4s

在这里插入图片描述
在这里插入图片描述
这里创建了一个 service 组件,用来对外暴露pod访问,在所有节点服务器上,暴露了20916端口,通过此端口,可以访问指定pod的8080端口

访问以下节点服务器的20916端口,都可以访问该应用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pod自动伸缩

k8s对应用部署节点的自动伸缩能力非常强,只需要指定需要运行多少个pod,k8s就可以完成pod的自动伸缩
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3个轮询
在这里插入图片描述
在这里插入图片描述

pod 使用部署文件手动部署pod

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

一个pod一个独立的服务器 以pod为单位
在这里插入图片描述

切换到193

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pod端口转发

使用 kubectl port-forward 命令设置端口转发,对外暴露pod.

使用服务器的 8888 端口,映射到 pod 的 8080 端口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值