Docker入门到实践(二)

       上一篇博文,讲了Docker的一些基础知识,还介绍了Docker的安装和基本命令。这篇文章,就讲如何创建自己的镜像仓库,还有如何将SpringBoot应用打包成Docker镜像,发布到镜像仓库中。本篇搭建私有仓库使用的是阿里云。当然,腾讯云和百度云也可以完成此功能,这里不做概述。

创建镜像仓库

首先,需要去阿里云的"管理控制台"找到容器镜像服务,然后就可以看到如下界面

红色框框圈起来的就是博主创建的镜像仓库。如果刚开始使用的话,这里是一片空白的。点击旁边的创建镜像仓库,即可创建。

将信息填写完成即可。在填写的时候,会遇到选择命名空间,在旁边的菜单可以看到命名空间,点击创建。
创建完成后,可以看到管理和删除按钮,点击管理,即可看到相应的操作指南。

构建镜像

这里以SpringBoot项目为例,至于如何创建简单的SpringBoot应用,本文就不做描述了。可以参考博主的其他博文。

https://blog.csdn.net/qq_32101993/article/details/84582927

创建SpringBoot应用

这里就以返回简单的字符串为例。

修改Maven配置

在pom.xml中的properties标签内增加如下配置

<docker.image.prefix>qfcwx</docker.image.prefix>

中间的内容,根据自己的情况修改即可。

然后,新增Docker对于Maven的插件。

        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.10</version>
            <configuration>
                <repository>${docker.image.prefix}/${project.artifactId}</repository>
                <buildArgs>
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>

这个插件用于将SpringBoot应用打包成镜像。
repository这个标签指打包后的镜像名称。
buildArgs打包时,取${}中的值。就是获取target目录下,xxx.jar文件。

创建Dockerfile

Dockerfile:由一系列命令和参数构成的脚本,这些命令应用于基础镜像,最终创建一个新的镜像。
在项目的根目录创建名为Dockerfile的文件。写上如下命令:

# 需要一个基础镜像
FROM openjdk:8-jdk-alpine
# 配置一个具有持久化功能的目录
VOLUME /tmp
# 编译镜像时加入的参数
ARG JAR_FILE
 # 将本地文件复制到容器
COPY ${JAR_FILE} demo.jar
# 容器启动时执行的命令
ENTRYPOINT ["java","-jar","/demo.jar"]

①、FROM::需要一个基础镜像,可以是公共的或者私有的,后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FORM指令。
②、VOLUME:配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建一个临时文件,并链接到容器的/tmp。
注意:这个步骤是根据情况选择的。如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到Docker数据文件夹,因为SpringBoot使用的内嵌Tomcat容器默认使用/tmp作为工作目录。
③、ARG:设置编译镜像时加入的参数。
④、COPY:只支持将本地文件复制到容器。
⑤、ENV:设置容器的环境变量
⑥、ENTRYPOINT:容器启动时执行的命令。
⑦、EXPOSE 8080:暴露镜像端口。

Dockerfile的构建命令也是很多的,具体的使用方法,还需要根据资料或者Docker官网提供的文档。下面给大家推荐一篇详细讲解Dockerfile的博文。

https://blog.csdn.net/atlansi/article/details/87892016

打包构建

Dockerfile文件完成后,就需要使用Maven进行构建了,因为博主的Windows系统上没有安装Docker环境。所以,博主将项目拷贝到了虚拟机中的Linux系统上,然后再进行构建。

mvn install dockerfile:build  # 构建命令

等待些许时间,就能构建完成了。

然后查看镜像。

可以看到SpringBoot应用已经构建成了Docker镜像。下面就可以启动一下,看看效果啦。

docker run --name demo -d -p 8080:8082 qfcwx/docker-demo    # 启动容器
docker ps   # 查看容器
curl 'http://127.0.0.1:8080/api/docker'     # 获取页面内容

依次使用上面的命令,可以看到成功的返回了SpringBoot应用中的内容,证明打包镜像成功了。

上传至私有仓库

本地已经构建成功,下面就将镜像上传至我们的私有镜像仓库。

本地推送

一、登录阿里云Docker Registry

sudo docker login --username=xxxx registry.cn-beijing.aliyuncs.com

二、打一个tag

sudo docker tag [ImageId] registry.cn-beijing.aliyuncs.com/qfcwx/qfcwx_registry:[镜像版本号]

三、推送

sudo docker push registry.cn-beijing.aliyuncs.com/qfcwx/qfcwx_registry:[镜像版本号]

输入上面命令,可以看到推送状态。

推送完成,就可以在阿里云控制台中的镜像仓库中看到刚刚推送的镜像了。

拉取镜像

本地推送完成,就可以登录自己的私有镜像仓库,使用别的服务器拉取私有仓库中的镜像了。博主这里使用阿里云ECS服务器进行拉取。

一、登录阿里云Docker Registry

sudo docker login --username=xxxx registry.cn-beijing.aliyuncs.com

第一步还是登录阿里云私有镜像仓库

二、拉取镜像

sudo docker pull registry.cn-beijing.aliyuncs.com/qfcwx/qfcwx_registry:[镜像版本号]

使用上面命令即可拉取镜像。

三、启动容器
使用同样的命令启动。

查看是否启动成功,可以通过查看Docker的日志。

docker logs -f 容器id

四、本地访问
基本上,所有操作都结束了,最后就是通过浏览器查看结果了。

通过浏览器得到了同样的结果,证明我们的所有操作都是成功的。

镜像加速

如果觉得获取Docker官方镜像的速度慢的话,可以使用阿里云提供的加速器。上面有很详细的操作文档,读者可以根据阿里云提供的地址自行配置。

本篇博文就接近尾声了,进行了这么多操作,最后成功使用Docker打包自己的应用,并推送到私有镜像仓库中去。虽然过程繁杂,但是做完后,也是小有成就了。
相信这就是广大程序员喜欢编程的另一个原因吧。

各位读者,我是清风,一个朝着架构师努力的程序员。希望同大家一起进步,一起学习。

有一个被人嘲笑的梦想,万一有天实现了呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值