利用dockerfile构建镜像


前言

docker流行的今天,许多项目在交付或者开源项目中都会附属一个东西-dockerfile,有了这个文件,你可以构建自己的镜像,在移植部署时,系统会自动帮你完成环境设置。方便简单


提示:以下是本篇文章正文内容,下面案例可供参考

一、dockerfile是什么?

Dockerfile是一个创建镜像所有命令的文本文件, 包含了一条条指令和说明, 每条指令构建一层, 通过docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建.有了Dockefile, 就可以制定自己的docker镜像规则,只需要在Dockerfile上添加或者修改指令, 就可生成docker 镜像.

二、基础命令

1.FROM

docker镜像类似于积木,是一层一层搭建而成。所以想要构建最终的镜像文件,那么需要使用基础镜像文件作为地基,本次目的是将可运行的jar包构建为镜像,那么使用openjdk作为基础镜像文件
FROM openjdk:8  

2.MAINTAINER

维护者信息,可以标注作者和邮箱
MAINTAINER manc 827766234@qq.com

3.EXPOSE

docker容器内部端口
EXPOSE 9527 

3.COPY

将宿主机文件复制到docker容器下,宿主机文件目录必须和dockerfile文件目录下
COPY package.json /usr/src/app

4.WORKDIR

配置工作目录,就是cd 到某个目录下执行命令
WORKDIR /usr/data

5.VOLUME

目录挂载,将docker容器中的目录和宿主机目录挂载
WORKDIR /usr/data /usr/local/tomcat

6.ENV

设置环境变量,如设置java环境变量,配置mysql账户密码
ENV JAVA_HOME /opt/jdk

7.ENTRYPOINT

容器命令指令 ENTRYPOINT 的作用和用法和CMD一样,但是又不同: 1.CMD命令会被docker run的命令覆盖而ENTRYPOINT不会 2.CMD和ENTRYPOINT都存在时,CMD的指令变成了ENTRYPOIN的参数,并且此CMD提供的参数被docker run后面的命令覆盖 3.可以使用json写法和shell命令写法
ENTRYPOINT ["java","-jar","-Xms256m","-Xmx512m","<jar包名>"]

三 示例

FROM openjdk:8
MAINTAINER manc 827766234@qq.com
WORKDIR /
EXPOSE 8080
ENTRYPOINT ["java","-jar","-Xms256m","-Xmx512m","<jar包名>"]

四 构建镜像

在dockerfile目录下移入需要构建的jar包,会默认使用当前目录的Dockerfile进行编译镜像,编译后的镜像名为imagename:v1

docker build -t imagename:v1 .

五 运行

以交互式方式启动容器,容器命名为contaniername,容器端口映射宿主机端口为8080,目录挂载data下

docker run -itd --name containername -p 8080:8080 -v /usr/data:usr/local/tomcat imagename bash

总结

dockfile解决了程序移植运行等问题,让程序交付后部署变得简单,但是这种方式在多个镜像部署和程序自动化运行时步骤变得繁琐,后面会出jenkins+dockerfile+.sh来实现自动化部署。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值