打包docker镜像推送到远程服务器并部署到k8s的方法步骤
目录
- 1、Dockerfile
- 2、pom配置
- 3、镜像推送
- 4、k8s部署
前提条件:
1、docker服务器已开启远程访问,参考《远程docker服务器携带证书连接》。
2、服务器上已经搭建好k8s集群,本文是k8s单点集群用于测试。
在之前的文章中我们已经通过idea的docker插件测试了远程docker服务器已经能够正常访问,虽然利用这个docker插件也可以完成docker镜像的打包及推送,但本文我们将换一种方式,使用maven的docker-maven-plugin插件完成docker镜像的打包,以及推送到远程docker服务器。
1、Dockerfile
Dockerfile文件用于将我们的应用做成docker镜像
# 指定jdk环境版本,基于java8创建镜像 FROM java:8 # 挂载临时目录 VOLUME /tmp # 添加指定jar包到容器《此处为项目打包产生的jar包全名》 ADD practice-job-0.0.1-SNAPSHOT.jar /practice-job.jar # 容器向外暴露的端口号《指该项目运行所占用的的端口号》 EXPOSE 8081 # 容器启动后执行的命令 ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/practice-job.jar" ]
2、pom配置
pom文件的相关配置如下,注意填入远程服务器的ip,并指明上述Dockerfile路径以及访问远程docker需要的pem证书文件的路径。
org.springframework.boot
spring-boot-maven-plugin
com.spotify
docker-maven-plugin
1.2.2
build-image
package
build
true
practice-job
latest
${project.basedir}
https://公网ip:2376
${project.basedir}/src/main/resources/pem
/
${project.build.directory}
${project.build.finalName}.jar
3、镜像推送
上述准备就绪以后执行install命令,等待一段时间后下方控制台出现BUILD SUCCESS则说明镜像推送成功。


接着去远程服务器验证一下,输入docker images命令查看容器镜像。

可以看到我们的应用镜像已经推送成功了,下面就是部署阶段。
4、k8s部署
如果在以前我们的部署环境只有docker容器,那么这里只需要docker run我们的应用镜像,将项目部署在docker容器就可以访问了。但现在我们的部署环境是k8s+docker,所以不能直接运行我们的应用镜像进行部署,下面进入k8s的部署。
首先需要创建两个yaml文件:practice-job-deployment.yaml、practice-job-service.yaml,至于这两个文件的作用涉及到k8s的概念,关于k8s的概念将会在之后的文章中谈到,这里只需要知道在k8s中的大部分配置都是基于yaml文件进行定义的就可以了。
vi practice-job-deployment.yaml
apiVersion: v1
kind: Namespace
metadata:
name: practice
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: practice-job-deployment
namespace: practice
spec:
replicas: 1
selector:
matchLabels:
app: practice-job-pod
template:
metadata:
labels:
app: practice-job-pod
spec:
hostNetwork: true
containers:
- name: practice-job-container
image: practice-job:latest #镜像名称+版本
imagePullPolicy: Never #表示镜像来源,IfNotPresent本地没有就从hub仓库拉取,Never表示只从本地
ports:
- containerPort: 8081
env:
# 指定日志文件路径
- name: logging.path
value: /var/logs
vi practice-job-service.yaml
apiVersion: v1
kind: Service
metadata:
name: practice-job-service
namespace: practice
labels:
app: practice-job-service
spec:
type: NodePort
selector:
app: practice-job-pod
ports:
- name: http
protocol: TCP
port: 8081 #service(对内)的端口
targetPort: 8081 #pod的端口
nodePort: 32001 #service(对外)的端口
然后分别执行命令:
kubectl apply -f practice-job-deployment.yaml kubectl apply -f practice-job-service.yaml

执行命令:kubectl get pod --all-namespaces 查看pod,可以看到我们项目的pod已经成功运行。

执行命令:kubectl logs practice-job-deployment-77d685767-glvgm -n practice 查看应用运行日志。格式为:kubectl logs

执行命令:docker ps 可以看到项目也已经运行在容器中了

执行命令:kubectl get service --all-namespaces 可以看到应用对应的服务也已启动成功且对外暴露的端口正是32001,这个端口就是我们前面在yaml文件中自己配置的。

最后浏览器访问:公网ip:32001/doc.html。此路径只是针对我的项目,不同的项目路径不同。注意防火墙需要开启相应端口。

至此应用从本地打包docker镜像推送至服务器,并部署到k8s+docker容器结束。
上一篇:Jenkins Docker静态agent节点的构建过程
栏 目:其它服务器
本文标题:打包docker镜像推送到远程服务器并部署到k8s的方法步骤
本文地址:https://zz.feitang.co/server/33129.html
您可能感兴趣的文章
- 01-12Docker部署rabbitmq遇到的两个问题
- 01-12最新虚拟机VMware 14安装教程
- 01-12使用docker compose安装harbor私有仓库的详细教程
- 01-12Windows下Docker安装各种软件的详细过程
- 01-12seata docker 高可用部署的详细介绍
- 01-12浅谈Tomcat多层容器的设计
- 01-12Gogs+Jenkins+Docker 自动化部署.NetCore的方法步骤
- 01-12解决vscode docker插件docker.socket权限问题
- 01-12Docker中运行PostgreSQL并推荐几款连接工具
- 01-12Docker核心原理之 Cgroup详解


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-23linux中ftp无法访问怎么办
- 12-11docker存储目录迁移示例教程
- 12-10docker start启动容器后仍然exit状态的解决
- 12-10Linux下如何安装Logstash
- 12-05Docker安装Jenkins全过程
- 01-05Shell脚本去重的几种方法实例
- 12-22kvm虚拟机配置NAT端口转发的实现方法
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法




