通过Jib将Springboot应用通过Docker部署

一、安装Docker

1、更新Yum包

yum update

通过Jib将Springboot应用通过Docker部署

2、卸载旧版本:(如果安装过旧版本的话)

(1)删除软件包

yum remove -y docker docker-client docker-client-latest docker-common \
                  docker-latest docker-latest-logrotate docker-logrotate \
                  docker-selinux docker-engine-selinux docker-engine

rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker

(2)查看已经安装的docker安装包,列出入校内容

rpm -qa|grep docker 

(3)分别删除

yum -y remove docker-ce-cli-18.09.3-3.el7.x86_64

(4)删除docker镜像

rm -rf /var/lib/docker

3、安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

通过Jib将Springboot应用通过Docker部署

4、设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

通过Jib将Springboot应用通过Docker部署

5、可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

通过Jib将Springboot应用通过Docker部署

6、安装Docker

默认安装最新版,可以自行选择版本,例如:yum install docker-ce-17.12.1.ce

yum install -y docker-ce

通过Jib将Springboot应用通过Docker部署
通过Jib将Springboot应用通过Docker部署

7、启动Docker,然后加入开机启动

如遇到无法启动,请检查是否彻底删除之前的版本

systemctl start docker    #启动docker

	

systemctl enable docker		#开机启动docker

通过Jib将Springboot应用通过Docker部署

8、验证是否安装成功

docker version           #查看docker版本号,有client和service两部分表示docker安装启动都成功了

通过Jib将Springboot应用通过Docker部署

9、运行第一个docker镜像

docker run hello-world     #运行第一个docker镜像

通过Jib将Springboot应用通过Docker部署

10、docker常用命令

更多命令详解,请访问:http://www.docker.org.cn/dockerppt/106.html
docker ps #查看当前正在运行的容器
docker ps -a #查看所有容器的状态
docker start/stop id/name #启动/停止某个容器
docker attach id #进入某个容器(使用exit退出后容器也跟着停止运行)
docker exec -ti id #启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
docker images #查看本地镜像
docker rm id/name #删除某个容器
docker rmi id/name #删除某个镜像
docker run --name test -ti ubuntu /bin/bash #复制ubuntu容器并且重命名为test且运行,然后以伪终端交互式方式进入容器,运行bash
docker build -t soar/centos:7.1 . #通过当前目录下的Dockerfile创建一个名为soar/centos:7.1的镜像
docker run -d -p 2222:22 --name test soar/centos:7.1 #以镜像soar/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变

二、搭建私有仓库

1、下载镜像registry

docker pull registry

通过Jib将Springboot应用通过Docker部署

2、查看Registry镜像是否pull下来了

docker images

通过Jib将Springboot应用通过Docker部署

3、运行registry容器

docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest 

参数说明
-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
-v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
–restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
–name registry:创建容器命名为registry,你可以随便命名;
registry:latest:这个是刚才pull下来的镜像;

详细介绍,请参考:http://www.runoob.com/docker/docker-run-command.html
通过Jib将Springboot应用通过Docker部署

4、查看是否成功启动registry容器

docker ps

通过Jib将Springboot应用通过Docker部署

5、测试镜像仓库中所有的镜像

curl http://127.0.0.1:5000/v2/_catalog

通过Jib将Springboot应用通过Docker部署

三、测试推送和拉取镜像

1、修改下镜像源并重启docker服务

(1)修改daemon.json

vim /etc/docker/daemon.json

修改成以下内容:

{
  "registry-mirrors": [ "https://registry.docker-cn.com"]
}

(2)重启docker服务

systemctl restart docker

2、下载busybox镜像

docker pull busybox

通过Jib将Springboot应用通过Docker部署
查看镜像:

docker images

通过Jib将Springboot应用通过Docker部署

3、为镜像打标签

docker tag busybox:latest 130.120.3.194:5000/busybox:v1

查看镜像:

docker images

通过Jib将Springboot应用通过Docker部署

4、上传到镜像服务器

docker push 130.120.3.194:5000/busybox:v1

通过Jib将Springboot应用通过Docker部署
注意了,这是报错了,需要https的方法才能上传,我们可以修改下daemon.json来解决:

vim /etc/docker/daemon.json

{
  "registry-mirrors": [ "https://registry.docker-cn.com"],
  "insecure-registries": [ "130.120.3.194:5000"]
}

添加私有镜像服务器的地址,注意书写格式为json,有严格的书写要求,然后重启docker服务:

systemctl  restart docker

重新上传到镜像服务器

docker push 130.120.3.194:5000/busybox:v1

通过Jib将Springboot应用通过Docker部署

5、测试下载镜像

(1)先删除主机上所有的镜像(谨慎操作)

docker rmi -f $(docker images -aq)

通过Jib将Springboot应用通过Docker部署

(2)查看一下主机上的镜像是否已全部删除

 docker images

通过Jib将Springboot应用通过Docker部署

(3)从registry服务器上下载busybox镜像

docker pull 130.120.3.194:5000/busybox:v1

通过Jib将Springboot应用通过Docker部署

(4)查看镜像是否下载成功

docker images

通过Jib将Springboot应用通过Docker部署

6、列出所有镜像

curl http://130.120.3.194:5000/v2/_catalog

通过Jib将Springboot应用通过Docker部署

7、列出busybox镜像有哪些tag

curl http://130.120.3.194:5000/v2/busybox/tags/list

通过Jib将Springboot应用通过Docker部署

四、将Springboot应用发布到Docker Registry

1、添加jib插件

在要发布的Springboot应用的pom.xml配置文件上
通过Jib将Springboot应用通过Docker部署
添加jib-maven-plugin插件
通过Jib将Springboot应用通过Docker部署
代码如下:

<plugin>
	<groupId>com.google.cloud.tools</groupId>
	<artifactId>jib-maven-plugin</artifactId>
	<version>1.0.1</version>
	<configuration>
		<from>
			<image>openjdk:alpine</image>
		</from>
		<to>
<!--目标镜像registry地址,:前面是发布镜像的名称,:后面是发布的版本号-->
			<image>130.120.3.194:5000/hse-protal-web:0.0.1-SNAPSHOT</image>
		</to>
		<allowInsecureRegistries>true</allowInsecureRegistries>
		<container>
<!--指定入口类-->
			<mainClass>com.aifa.mins.hse.protal.web.Application</mainClass>
<!--指定运行的参数-->
			<environment>
				<spring.profiles.active>prod</spring.profiles.active>
			</environment>
		</container>
	</configuration>
	<!-- 将jib:build绑定到package命令 ,执行mvn package相当于mvn compile jib:build-->
	<executions>
		<execution>
			<phase>package</phase>
			<goals>
				<goal>build</goal>
			</goals>
		</execution>
	</executions>
</plugin>

Jib插件详细介绍,请访问:
https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin

2、构建发布到registry

执行mvn命令:
mvn compile jib:build
通过Jib将Springboot应用通过Docker部署

BUILD SUCCESS 表示构建成功

3、查看是否push成功

浏览器输入:

http://130.120.3.194:5000/v2/_catalog

通过Jib将Springboot应用通过Docker部署

4、查看push的tag版本

浏览器输入:

http://130.120.3.194:5000/v2/hse-protal-web/tags/list

通过Jib将Springboot应用通过Docker部署
到此,已经将我们的springboot项目push到docker registry上

五、Docker运行工程

1、安装docker

请参考一、安装Docker

2、配置docker

vim /etc/docker/daemon.json

{
  "registry-mirrors": [ "https://registry.docker-cn.com"],
  "insecure-registries": [ "130.120.3.194:5000"]
}

3、下载docker镜像

(1)执行docker命令:

docker pull 130.120.3.194:5000/hse-protal-web:0.0.1-SNAPSHOT

将hse-protal-web的0.0.1-SNAPSHOT版本下载下来

(2)查看是否下载成功

docker images

通过Jib将Springboot应用通过Docker部署

4、执行run命令

(1)测试运行

docker run -p 8888:8080 130.120.3.194:5000/hse-protal-web:0.0.1-SNAPSHOT

(2)后台运行

docker run -itd -p 8888:8080 --restart=always --name hse-protal-web 130.120.3.194:5000/hse-protal-web:0.0.1-SNAPSHOT

参数说明
-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
-p:映射端口;访问宿主机的8888端口就访问到hse-protal-web容器的8080端口;
–restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
–name hse-protal-web:创建容器命名为hse-protal-web,可以随便命名;
130.120.3.194:5000/hse-protal-web:0.0.1-SNAPSHOT:这个要运行的镜像;

详细介绍,请参考:http://www.runoob.com/docker/docker-run-command.html

(3)浏览器访问

通过Jib将Springboot应用通过Docker部署
访问成功~~~