在windows环境docker学习随笔(一)docker镜像运行中介绍了docker的基本操作和镜像下载运行,但实际开发当中除了一些像数据库之类的镜像可以直接下载,应用相关的镜像是需要自己打包的

什么是Dockerfile

       Dockerfile实际上就是包含一段指令的文件,是自己新建的,这些指令其实就是打包的步骤,用来告诉docker在打包的时候要怎么构建我们的镜像,每个镜像打包的时候的操作都不一样,所以Dockerfile的内容也不一样,并不是通用的,所以要理解Dockerfile的指令到底是什么意思。

 

Dockerfile常用命令

       详细的可以看别人的一些汇总dockerfile命令详解,这里记录几个常用的指令。

FROM

     当前镜像是基于什么来打包的,一般来说我们的应用是在tomcat下运行的,所以一般来说应用打包这里都是tomcat,意思就是在tomcat的镜像上面重新打包自己的镜像。

MAINTAINER

     镜像所有者的信息

COPY

    将本地文件复制到镜像的指定位置,注意只能是本地文件

ADD

    功能与copy一样,但是不仅限于本地文件

ENTRYPOINT

    容器启动的时候默认执行的命令,如果我们是将一个war包打到tomcat下面,tomcat启动的时候自然就会运行,但是如果是jar包或者其他的东西需要另外的命令来启动的话这里就是设置执行的命令,否则启动之后不会自动执行的,需要自行进入到容器中执行。

CMD

    与上面的类似,也是在容器启动的时候执行,但是cmd会在启动容器时被run命令指定的指定命令所覆盖,ENTRYPOINT就不会

 

打包步骤

这里以打包eureka服务为例子

第一步,将我们的eureka服务编译成jar包。

第二步,创建dockerfile文件,不需要任何后缀,并将dockerfile文件与eureka放到同一个目录下面

FROM tomcat
MAINTAINER XXXXXX
COPY 1001eureka-server.jar   /usr/local/tomcat/webapps
ENTRYPOINT java -jar /usr/local/tomcat/webapps/1001eureka-server.jar

    这个dockerfile的意思是,基于tomcat镜像打包,所有者是XXXXXX,将eureka的jar包复制到/usr/local/tomcat/webapps目录下,启动的时候运行“java -jar /usr/local/tomcat/webapps/1001eureka-server.jar”命令,

第三步,执行build命令,将d:/doc的文件打包,指定镜像的名称为eureka,版本号1.0,然后控制台会输出Dockerfile文件中命令的执行信息

docker build -t eureka:1.0 d:/doc.

    成功后可以通过images命令查看,第一个是制定了镜像名称和tag的,第二个是没有指定的会变成<none>,虽然都可以根据imgeid去使用,但是肯定是不方便的

 

运行刚才的镜像,将容器命名为eurekaServer,将容器的8760端口映射到本地的8761端口

docker run -itd --name eurekaServer -p 8761:8760 eureka:1.0

访问localhost:8761可以进入eureka服务器,证明镜像打包成功,运行正常

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐