欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Dockerfile

程序员文章站 2022-04-18 23:16:16
...

简介

构建镜像的方式有两种:一种是基于容器制作,另一种就是通过Dockerfile。Dockerfile其实就是我们用来构建Docker镜像的源码,当然这不是所谓的编程源码,而是一些命令的组合,只要理解它的逻辑和语法格式,就可以编写Dockerfile了。

dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,
另外,使用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙

简要概括Dockerfile的作用:它可以让用户个性化定制Docker镜像。因为工作环境中的需求各式各样,网络上的镜像很难满足实际的需求。

dockerfile基本结构:
Dockerfile 由一行行命令语句组成, 并且支持以#开头的注释行,一般而言, Dockerfile 主体内容分为四部分:

基础镜像信息、 维护者信息、 镜像操作指令和容器启动时执行指令。

部分 命令
基础镜像信息 FROM
维护者信息 MAINTAINER
镜像操作指令 RUN、(COPY/ADD)、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME
容器启动时执行指令 CMD、ENTRYPOINT

Dockerfile Format

1,Dockerfile文件名首字母必须大写。
2,Dockerfile指令不区分大小写,但是为方便和参数做区分,通常指令使用大写字母。
3,Dockerfile中指令按顺序从上至下依次执行。
4,Dockerfile中第一个非注释行必须是FROM指令,用来指定制作当前镜像依据的是哪个基础镜像
5,Dockerfile中需要调用的文件必须跟Dockerfile文件在同一目录下,或者在其子目录下,父目录或者其它路径无效。

Docker制作jdk镜像

1,创建镜像目录
mkdir –p /zzlk/jdk
2,安装lrzsz命令
yum install lrzsz -y
3,选择文件进行上传(注意的是会上传到当前文件夹下)
rz
当上传完成,即可看到你当前文件夹下有了上传的文件,
Dockerfile
(生成文件)
4,touch Dockerfile
Dockerfile
5,编辑此文件:‘
vi Dockerfile
(请根据自己的配置更改)

#1.指定基础镜像,并且必须是第一条指令
FROM centos:7

#2.指明该镜像的作者和其电子邮件
MAINTAINER zlk "aaa@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /zzlk/jdk

#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-8u221-linux-x64.tar.gz /zlk/jdk/

#5.配置环境变量
ENV JAVA_HOME=/zzlk/jdk/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

#容器启动时需要执行的命令
#CMD ["java","-version"]

Dockerfile
6,执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像
docker build -t jdk8:v1.0 .
注1:-t jdk8:v1.0 给新构建的镜像取名为 jdk8, 并设定版本为 v1.0
注2:注意最后有个点,代表使用当前路径的 Dockerfile 进行构建
7,.查看镜像
docker images

完成了。。。。

dockerfile实践经验

  1. 精简镜像用途:尽量让每个镜像的用途都比较集中单一,避免构造大而复杂、多功能的镜像

  2. 选用合适的基础镜像:容器的核心是应用,选择过大的父镜像(如Ubuntu系统镜像)会造成最终生成应用镜像的膝肿,

    推荐选用瘦身过的应用镜像或者较为小巧的系统镜像(alpine)

上一篇: Docker 概述

下一篇: kibana介绍