首页 理论教育 使用Dockerfile轻松创建镜像

使用Dockerfile轻松创建镜像

时间:2023-11-22 理论教育 版权反馈
【摘要】:把自己编写的Java服务运行在Docker上的前提是生成一个服务的镜像,可以使用Dockerfile文件配置镜像内容,然后就可以通过docker build命令生成镜像了。FROM java:8上面的代码中,用到了部分Dockerfile的属性。生成镜像把上面的jar包和Dockerfile文件放入同一目录下,然后运行如下命令,注意命令中结尾有“.”符号表示当前路径。图19-4 容器服务注册至Eureka常用指令上面使用Dockerfile的方式创建了镜像,在文件中使用了部分Dockerfile的指令设置镜像的内容和执行方法。表19-2 Dockerfile指令(续)

使用Dockerfile轻松创建镜像

把自己编写的Java服务运行在Docker上的前提是生成一个服务的镜像,可以使用Dockerfile文件配置镜像内容,然后就可以通过docker build命令生成镜像了。下面以之前编写的工程SpringCloudServiceProvider为例,生成此服务的镜像,并且了解Dockerfile文件的属性含义。

(1)生成服务jar包

首先编译工程,可以得到SpringCloudServiceProvider-0.0.1-SNAPSHOT.jar文件,这个文件之前介绍过,可以通过java-jar的方式直接启动,镜像文件也需要此文件才能启动服务。

(2)编写Dockerfile文件

Dockerfile文件其实可以理解为一个配置文件,它描述了一个镜像包含的内容和需要启动的方法等,本例先创建Provider服务的Dockerfile文件,后面会详细讲解文件中字段的含义。

FROM java:8

978-7-111-61011-3-Part04-3.jpg

上面的代码中,用到了部分Dockerfile的属性。FROM指定了基础的镜像;ADD把jar文件放入镜像的/data/run目录;EXPOSE指定镜像对外暴露18010端口;WORKDIR指定镜像内的工作目录为/data/run;ENTRYPOINT配置了镜像的启动运行命令。

(3)生成镜像

把上面的jar包和Dockerfile文件放入同一目录下,然后运行如下命令,注意命令中结尾有“.”符号表示当前路径。 $docker build-t springcloud/provider:0.0.1. 运行命令后,可以看到显示如下内容。

978-7-111-61011-3-Part04-4.jpg

(4)运行镜像并查看服务情况

现在镜像已经生成,可以通过docker images命令查看镜像,会得到如下输出。

REPOSITORY TAG IMAGE ID CREATED SIZE

springcloud/provider 0.0.1 e6ad17c121bc 2 minutes ago 700.5MB 这就是刚刚生成的镜像,可以使用docker run命令启动镜像。 $docker run-d--name provider--net=host-v/logs:/logs e6ad17c121bc

上面的命令指定容器在后台运行,和主机共享网络,把镜像内的/logs目录进行挂载,容器名为provider。运行命令后,可以通过docker ps命令查看容器情况,如图19-2所示(www.xing528.com)

978-7-111-61011-3-Part04-5.jpg

图19-2 容器运行情况

(5)容器运行情况

通过Postman请求此容器服务,可以看到如图19-3所示的请求结果。

978-7-111-61011-3-Part04-6.jpg

图19-3 请求容器中的服务

查看Eureka服务注册信息,可以看到新的容器服务已经注册进来,如图19-4所示。

978-7-111-61011-3-Part04-7.jpg

图19-4 容器服务注册至Eureka

(6)常用指令

上面使用Dockerfile的方式创建了镜像,在文件中使用了部分Dockerfile的指令设置镜像的内容和执行方法。下面简单介绍Dockerfile的常用指令,见表19-2。

19-2 Dockerfile指令

978-7-111-61011-3-Part04-8.jpg

(续)

978-7-111-61011-3-Part04-9.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈