小知识:打包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证书文件的路径。

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!–使用docker-maven-plugin插件,用于将该服务打包成镜像发往docker服务端–> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <!–将插件绑定在某个phase执行 –> <executions> <execution> <id>build-image</id> <!–将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build –> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <forceTags>true</forceTags> <!–指定生成的镜像名 该处修改为自己想要生成的镜像名称–> <imageName>practice-job</imageName> <!–指定标签–> <imageTags> <imageTag>latest</imageTag> </imageTags> <!– 指定Dockerfile 路径 –> <dockerDirectory>${project.basedir}</dockerDirectory> <!–指定远程docker地址 –> <dockerHost>https://公网ip:2376</dockerHost> <!–指定pem证书文件路径地址 –> <dockerCertPath>${project.basedir}/src/main/resources/pem</dockerCertPath> <!– 这里是复制jar包到docker容器指定目录配置 –> <resources> <resource> <targetPath>/</targetPath> <!–jar 包所在的路径此处配置的即对应 target 目录 –> <directory>${project.build.directory}</directory> <!– 需要包含的jar包,这里对应的是Dockerfile中添加的文件名 –> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>

3、镜像推送

        上述准备就绪以后执行install命令,等待一段时间后下方控制台出现BUILD SUCCESS则说明镜像推送成功。

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-猿站网-插图

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-1猿站网-插图

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

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-2猿站网-插图

        可以看到我们的应用镜像已经推送成功了,下面就是部署阶段。

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

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-3猿站网-插图

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

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-4猿站网-插图

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

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-5猿站网-插图

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

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-6猿站网-插图

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

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-7猿站网-插图

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

%小知识:打包docker镜像推送到远程服务器并部署到k8s的方法步骤-8猿站网-插图

        至此应用从本地打包docker镜像推送至服务器,并部署到k8s+docker容器结束。

到此这篇关于打包docker镜像推送到远程服务器并部署到k8s的方法步骤的文章就介绍到这了,更多相关docker镜像打包并部署到k8s内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/h2503652646/article/details/120931329

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:解析docker妙用SpringBoot构建微服务实战记录

2023-3-14 20:15:16

建站知识

小知识:远程docker服务器携带证书连接的实现方法

2023-3-14 20:30:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索