docker入门,springboot + docker-maven-plugin

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/oyc619491800/article/details/94383350

最近自己在学习docker,顺便记录一下学习过程,本人电脑是win 10 家庭版的,所以没有在本地安装Docker Desktop For Windows(因为不支持Hyper-v,可通过官网查看 https://docs.docker.com/install ),但是可以通过安装Docker Toolbox + VirtualBox来搭建环境。由于我电脑已经安装了VMWare和centos7,所以只需在centos7上安装docker-ce便可以。

什么是docker,为什么要使用docker?
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
Docker的应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker 的优点
1、简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
2、避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
3、节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

上面摘抄自菜鸟教程, 下面我将从环境搭建开始讲起:

1. Win 10 安装 VMWare
下载地址: 链接:https://pan.baidu.com/s/10NA1AtaxPW-HY9borvldXw 含激活教程和注册码
提取码:gf5i ,安装教程可参考: http://www.zhanshaoyi.com/10143.html (可直接下载这个链接中提供的软件)

2. VMWare 安装 centos7
可参考:https://www.jianshu.com/p/0416e6242e67
由于是个人开发测试用,安装centos7后我关闭了防火墙,后面不涉及防火墙的问题

3. centos7 安装jdk、maven
自行百度,maven也可不安装,我当时是为了测试一下将jar包上传到centos7上,然后再打镜像的。

4. centos7 安装 docker
可参考官网: https://docs.docker.com/install/linux/docker-ce/centos/

5. docker服务开通tcp访问
vi /usr/lib/systemd/system/docker.service // 编辑配置
将配置项ExecStart 改为 :ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
systemctl daemon-reload //重新读取配置文件
systemctl restart docker //重新启动服务
lsof -i:2375 // 查看2375端口是否开启
netstat antlp | grep 2375 // 也可以查看
这一步很重要,为后面的docker_host配置做铺垫,当时我踩了坑,后面查资料才知道。。。

6. IDEA 创建 springboot 应用
springboot应用的创建自行了解,pom.xml截图如下:
在这里插入图片描述
本demo是使用Dockerfile方式构建镜像,如果不使用此方式,Dockerfile文件可以不要,只需将pom的中<dockerDirectory></dockerDirectory>注释掉,把<baseImage></baseImage><entryPoint></entryPoint>的注释放开,*特别注意的是,需要在windows上配置环境变量,DOCKER_HOST:tcp://192.168.2.101:2375,或者在pom中指定<dockerHost>http://192.168.2.101:2375</dockerHost>,这就是上文提到的为什么要打开2375端口,相当于提供docker环境信息。IP是虚拟机的IP。Dockerfile截图如下:
在这里插入图片描述
然后打开IDEA的terminal,输入mvn clean package docker:build -DskipTests ,-DskipTests 为跳过测试,构建成功后如下图:
在这里插入图片描述

7. 用Secure CRT 连接虚拟机(其他方式也可)
输入 docker images -a 查看镜像是否上传到centos7上,截图如下:
在这里插入图片描述
8. 运行docker镜像
在secure crt上输入 docker run -d -p 8088:8080 registry.cn-shenzhen.aliyuncs.com/oyc/my-first-docker:1.0.0 运行docker镜像,然后在本地访问 http://192.168.2.101:8088/ ,显示如下:
在这里插入图片描述
-d :后台运行
-p :指定端口映射 8088为主机对外暴露的端口,即Dockerfile中配置的,8080为容器端口,也就是springboot应用的端口,我这里使用默认的。

9. dock push 推送镜像至阿里云镜像仓库
https://cr.console.aliyun.com/ 自行注册阿里账号及创建镜像仓库,具体操作可百度。
sudo docker login --username=[你的账号] registry.cn-shenzhen.aliyuncs.com
sudo docker tag [镜像ID] registry.cn-shenzhen.aliyuncs.com/oyc/my-first-docker:[镜像版本号]
sudo docker push registry.cn-shenzhen.aliyuncs.com/oyc/my-first-docker:[镜像版本号]
截图如下:
在这里插入图片描述
上传需要一定时间,上传成功后,可到阿里云的容器镜像服务里面查看上传的镜像。

扫描二维码关注公众号,回复: 7201889 查看本文章

10. 通过docker-maven-plugin插件推送镜像
上文介绍了使用docker push 命令推送镜像,现在介绍一下通过maven插件推送,相当于少了手动docker push的操作。

  1. 修改maven的配置文件settings.xml,在<servers></servers>节点中新增配置如下:
    <server>
		<!--maven的pom中可以根据这个id找到这个server节点的配置--> 
		<id>docker-francis</id>
		<!--这里是在阿里云注册的账号,也可以是docker hub的账号和密码-->
		<username>[email protected]</username>
		<!--这里是在阿里云注册的密码-->
		<password>123456</password>
		<configuration>
		   <!--这是在阿里云注册时填写的邮箱-->
		   <email>[email protected]</email>
		</configuration>
	</server>
  1. 修改pom.xml配置,将上文pom截图中的一段注释放开即可,所需放开配置如下:
<!-- 推送阿里云相关 -->
<serverId>docker-francis</serverId>
<!--表示阿里云的docker仓库地址。阿里云的容器镜像服务地址-->
<registryUrl>registry.cn-shenzhen.aliyuncs.com</registryUrl>
<!--表示推送镜像到仓库。-->
<pushImage>true</pushImage>
  1. 在terminal中输入mvn clean package docker:build -DskipTests,可看到如下信息:
    在这里插入图片描述
    通过截图很明显看到相比dock push 操作,多了push/pushing 相关的字眼,表明正在推送镜像,这时候你可以在虚拟机上执行docker images -a 命令,发现镜像已经传上去了,但是传送到阿里镜像仓库真是一个漫长的操作。。。

11. 在阿里镜像仓库查看镜像
在这里插入图片描述

github代码地址: https://github.com/francisoyc/my-first-docker

猜你喜欢

转载自blog.csdn.net/oyc619491800/article/details/94383350
今日推荐