Windows10子系统Ubuntu20.04.4 LTS部署docker后制作docker镜像,并把镜像推送至Harbor私有镜像仓库

0、前言

关于在Windows10中安装子系统,请参看我的上一篇博文

1、背景

随着微服务技术的不断普及,采用springboot、springCloud、netcore、net5、net6技术进行微服务开发的项目越来越多,为了更加方便部署和管理项目,通常都会采用docker容器的方式对微服务应用进行部署。然而目前的现状是大部分开发者都是用的Windows10桌面系统,而Windows10本身并不支持docker,当然你可以再找一台服务器安装Jenkins,在Jenkins服务器上完成docker镜像的制作以及部署,然对于初学者来说成本太高了。当前最流行的方法是在Windows10系统上安装Docker Desktop,然Docker Desktop占用系统资源偏高,我笔记本16G的内存,在Docker Desktop中启动多个容器后明显内存不大够用。前几天在Windows10中启用了WSL2,并安装了一个Ubuntu的子系统,可以让我们在Windows系统中使用原生Linux的功能,因此果断卸载了Docker Desktop。下面我就介绍一下在Ubuntu子系统中如何制做docker镜像,并把镜像推送至Harbor私有镜像仓库。

2、本案例微服务程序技术说明

本案例采用spring cloud + maven搭建微服务应用。
1、在工程pom.xml中引入了maven插件docker-maven-plugin

docker-maven-plugin的版本已经在根pom里管理了,所以工程不需要加版本号

<plugin>
	<groupId>com.spotify</groupId>
	<artifactId>docker-maven-plugin</artifactId>
	<configuration>
		<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
		<imageTags>
			<imageTag>${project.version}</imageTag>
			<imageTag>latest</imageTag>
		</imageTags>
		<forceTags>true</forceTags>
		<baseImage>${docker.baseImage}</baseImage>
		<volumes>${docker.volumes}</volumes>
		<env>
			<JAVA_OPTS>${docker.java.opts}</JAVA_OPTS>
		</env>
		<entryPoint>["java ","$JAVA_OPTS ${docker.java.security.egd} ","-jar ","/${project.build.finalName}.jar"]</entryPoint>
		<resources>
			<resource>
				<targetPath>/</targetPath>
				<directory>${project.build.directory}</directory>
				<include>${project.build.finalName}.jar</include>
			</resource>
		</resources>
	</configuration>
</plugin>

configuration属性解释

  • imageName:为镜像名
  • imageTags:配置镜像tag,这里指定了两个tag(最新的版本号和latest)
  • forceTags:强制在每次新的构建上覆盖镜像tags
  • baseImage:基础镜像
  • volumes:配置挂载目录
  • env:配置环境变量
  • entryPoint:配置执行命令
  • resources:配置目标jar包的位置

2、在父工程pom.xml的properties下增加以下参数

<docker.baseImage>openjdk:8-jre-alpine</docker.baseImage>
<docker.volumes>/tmp</docker.volumes>
<docker.image.prefix>docker.coding123.cn:18000/wgms</docker.image.prefix>
<docker.java.security.egd>-Djava.security.egd=file:/dev/./urandom</docker.java.security.egd>
<docker.java.opts>-Xms128m -Xmx128m</docker.java.opts>

参数解释

  • docker.baseImage:为jre8的基础镜像
  • docker.volumes:是在容器里挂载的目录
  • docker.image.prefix:仓库地址/项目名
  • docker.java.security.egd:加快随机数产生过程
  • docker.java.opts:设置JVM启动参数

3、在Ubuntu子系统中增加/etc/docker/daemon.json,并重启docker

{
    
    
        "registry-mirrors": [
                "http://mirrors.aliyun.com",
                "https://mirrors.tuna.tsinghua.edu.cn"
        ],
        "insecure-registries": ["docker.coding123.cn:18000"]
}

因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报http: server gave HTTP response to HTTPS client错误。为了解决这个问题需要把允许http访问的地址放入"insecure-registries"中。

重启docker

sudo service docker stop
sudo service docker start

4、在Ubuntu子系统中通过apt安装openjdk8

因为我们要通过maven对spring cloud项目打包,而maven又依赖jdk,因此我们需要先安装jdk,这里安装的事openjdk8,如下:

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update 
sudo apt-get -y install openjdk-8-jdk

详细过程如下:
1、检测有没有安装jdk
在这里插入图片描述
2、执行sudo add-apt-repository ppa:openjdk-r/ppa命令
在这里插入图片描述
在这里插入图片描述
3、执行sudo apt-get update 命令
在这里插入图片描述
4、执行sudo apt-get -y install openjdk-8-jdk
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、检测jdk安装版本
在这里插入图片描述

5、在Ubuntu子系统中通过apt安装maven

sudo apt install maven

详细过程如下:
1、先确认系统中是否已安装maven
在这里插入图片描述
2、执行sudo apt install maven,或者切换为root用户,直接执行apt install maven

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、通过mvn -v检测maven安装的版本

mvn -v

在这里插入图片描述

6、在Ubuntu子系统中进行docker镜像构建

6.1 先通过docker login登录私有镜像仓库

docker login docker.coding123.cn:18000

会要求输入用户名和密码,根据实际输入正确的用户名和密码。
查看一下本地镜像列表:
在这里插入图片描述

6.2 在Dockerfile目录下执行执行maven指令mvn docker:build

mvn docker:build

Dockerfile内容示例:

FROM openjdk:8u292

LABEL MAINTAINER=zhenglibing
WORKDIR /apps
ADD target/wgms-uaa.jar /apps/
CMD ["java","-jar","wgms-uaa.jar"]

详细过程如下:
在这里插入图片描述
再次查看一下本地镜像列表:
在这里插入图片描述

7、在Ubuntu子系统中推送docker镜像至Harbor私有镜像仓库

docker push docker.coding123.cn:18000/wgms/wgms-uaa

详细过程如下:
在这里插入图片描述
登录Harbor控制台查看镜像如下图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zlbdmm/article/details/127142440
今日推荐