上章回顾:跟小编玩转Docker到天亮 —— Docker容器入门上手实战体验
本章学习内容:掌握制作自定义镜像并且远程上传仓库
上一章节我们讲诉了docker容器的安装和基本命令的使用,并且实战下载Nginx镜像并且启动操作,那今天小编来讲怎么制作一个自己的镜像文件,如果你是新来小伙伴也没有关系,刚开始小编学习docker时候也没有去了解docker的一些概念,而是直接把项目制作成镜像文件并且运行起来,之后才去系统的学习的。
制作镜像的方式常见的来说一般就两种:
第一种:使用docker commit 命令制作镜像
使用这种方式需要一个前提,前提你得有一个基础镜像,然后运行这个镜像并且进入容器内容。然后在容器内部安装软件、或者一些其他操作,最后使用commit命令来构建一个新的镜像。
第二种:使用Dockerfile制作镜像
这种方式就是本章的重点之重了,通过创建一个Dockerfile文件,在文件中写入一些特定的构建指令,最后使用build命令来得到一个镜像。就好比如你在项目的根目录下创建一个Dockerfile文件,然后在Dockerfile文件中编写了你要把自己项目所生成的jar包放入docker镜像中去,并且指定容器启动时启动这个jar包,最后生成了一个镜像运行成容器,这样你的项目也就运行在容器当中了。
理解了吗? 还不理解? 如果还不理解不要紧,跟着小编步骤往下操作,自己动手操作一遍,小编相信你会理解的。
本章是以第二种方式为例
小编是Java出社会,那么就以java为例啦,道理都是一样的。
直接使用IDEA快速构建一个SpringBoot项目,最后运行启动效果下图。
噼里啪啦的写了如下代码,只是做个容器部署测试啦,别那么认真哈哈哈哈哈。
package com.example.springboot02.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Auther: IT贱男
* @Date: 2018/11/27 11:06
* @Description: docker容器部署测试
*/
@RestController
public class HelloWorldController {
@RequestMapping("/index")
public String index() {
return "hello docker";
}
}
项目有了,代码有了,运行效果有了,那我们接下来就是把刚刚新建的项目制作成一个镜像并且运行成容器,最后能访问即可。
第一步:在项目的根目录下创建一个名字叫的Dockerfile文件
第二步:编辑dockerfile文件,那写什么内容呢?
1、运行一个java程序,是需要java JDK对不对?
2、还要所编写的代码,这里小编是使用的Springboot,最后打包成jar包
3、最后启动这个jar包
我们要把以上三个步骤写入Dockerfile文件当中,这样docker才知道我们要干什么。
# 首先我们需要依赖一个JDK
FROM hub.c.163.com/library/java:8-alpine
# 使用IDEA工具最后生成的jar包都在targer目录下,最后为了方便重命名为app.jar
ADD target/*.jar app.jar
# 这个就代表我们容器启动之后需要执行的命令
ENTRYPOINT ["java","-jar","/app.jar"]
小编在详细的解释一下:
FROM 这个关键字表示我们需要依赖什么镜像,这里小编引用的是网易镜像中心的一个JDK版本是8-alpine,详细信息地址在这:https://c.163yun.com/hub#/library/repository/version?repoId=2999 , 需要引用什么后面就写所对应的镜像
ADD 这个关键字是实在的就是添加文件,就是要把所需要的文件添加到镜像当中
ENTRYPOINT 容器启动之后所要执行的命令,也就是启动我们的jar包,以前我们是不是在命令窗口是不是这么写的,"java -jar app.jar"
这里呢小编就粗略的提到了Dockerfile常用的构建指令,之后会有专门的一篇文章来讲诉Dockerfile有哪些指令,并且讲诉有什么区别。
第三步:相关东西都准备好了,那接下来就是真正来构建一个镜像文件,首先我们cd到项目的根目录下,然后使用build命令
docker build -t jiannan/spirngboot-hello . // build就是构建镜像所使用的命令
这里-t选项就是指定镜像的名字,最后面还有一个".",代表当前目录,所以说我们一开始需要进入项目的根目录下。
最后我们使用images命令来查看,就能看到我们刚刚所制作的镜像文件。
启动镜像就很简单啦,上一章节也所有讲到啦,-d 代表后台启动,-p 映射端口 8081是本机端口,8080 是映射到容器内部端口。 制作一个自己的镜像就是这么简单~~~
本来小编是打算上传到网易镜像中心,但发现在创建仓库时看到这么一个提示,所以只好放弃选择了docker。
第一步:首先你要去官网创建一个自己到账号,并且登陆上去:https://hub.docker.com/,然后创建一个自己到仓库。
第二步:使用docker login 来登陆,这里小编之前登陆过了所以记住了凭证,第一次登陆时需要输入刚刚注册的用户名和密码,然后登陆显示了Succeeded即可
第三步:使用docker push来推送到远程仓库,但小编发现错误了,信息如下:
这个是因为我是用kaneboy这个用户名登陆的,但是我的镜像名字是叫:jiannan/spirngboot-hell,所以就导致提示
requested access to the resource is denied,解决办法如下,换个名字就行啦,最后上传这个kaneboy开头的镜像。
上传成功提示如图,在docker后台也能看到对应的镜像文件,这个时候你的其他小伙伴就可以下载使用啦!
这个时候有些小伙伴就要想了,把镜像文件上传到第三方仓库去是不是不太安全,毕竟公司一些核心项目等等之类的。
啊对,所以呢? 我们可以在公司内网的服务器上搭建一个私人仓库,然后把镜像放到公司内网的仓库即可。
那怎么实现呢? 小编下章再讲~~~~
本章对有帮助的小伙伴记得点赞+关注,蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹~~