Dockerfile简介

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

dockerfile基本结构

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

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

部分                             命令

基础镜像信息                     FROM

维护者信息                       MAINTAINER

镜像操作指令                     RUN、(COPY/ADD)、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等

容器启动时执行指令               CMD、ENTRYPOINT

Docker制作jdk镜像

启动虚拟机,进入centos

创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件

创建镜像目录

mkdir –p /javaqil_docker/jdk

安装lrzsz命令

yum install lrzsz -y

选择文件进行上传

rz

注意d是大写

touch Dockerfile

编写 Dockerfile 文件

#.指定基础镜像,并且必须是第一条指令

FROM centos:

#.指明该镜像的作者和其电子邮件

MAINTAINER zs "zs@qq.com"

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

WORKDIR /javaqi_docker/jdk
#.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径 ADD jdk-8u221-linux-x64.tar.gz /javaqi_docker/jdk/ #.配置环境变量 ENV JAVA_HOME=/javaqi_docker/jdk/jdk1..0_221 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH=$JAVA_HOME/bin:$PATH #容器启动时需要执行的命令 #CMD ["java","-version"]

执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像

docker build -t jdk8:v1.0 .

注1:-t  jdk8:v1.0  给新构建的镜像取名为 jdk8, 并设定版本为 v1.0

注2:注意最后有个点,代表使用当前路径的 Dockerfile 进行构建

查看镜像

docker images

创建并启动容器

docker run -it --name MyJdk 0d432a6637a7

检查是否有问题

java -version

dockerfile实践经验

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

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

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

Dockerfil的更多相关文章

  1. Orleans部署

    一.配置指南 1,客户端配置 2,服务端配置 3,典型配置 4,配置.NET垃圾收集 5,SQL系统存储 二.监控 1,运行时监视 2,silo错误代码监测 3,客户端错误代码监测 三.解决部署问题 ...

  2. Docker的入门使用(初探总结)

    Docker容器包含两种(Linux,Windows)内核,常用的为Linux. linux ,mac,windows8及以下(boot2docker,通过Linux虚拟机实现)的Docker提供Li ...

  3. 【09】循序渐进学 docker:docker swarm

    写在前面的话 至此,docker 的基础知识已经了解的差不多了,接下来就来谈谈对于 docker 容器,我们如何来管理它. docker swarm 在学习 docker swarm 之前,得先知道容 ...

  4. docker的安装及基础操作与镜像构建

    仓库配置及安装启动 [root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [root@loca ...

  5. Docker详解(四) — Dockerfile剖析

    目录 1.Dockfile简介 2. Dockerfile构建过程解析 3. Dockerfile体系结构 4. 案例 4.1 自定义mycentos 4.2 CMD/ENTRYPOINT 镜像案例 ...

  6. bayaim——听课笔记_01.Docker基础应用 10课.txt

    ===========2019年8月5日18:39:06====================10.20.100.21rootbayaim ==========01-Docker介绍======== ...

  7. dockerfile命令说明及使用

    执行Dockerfile命令: docker build -f /path/to/a/Dockerfil Dockerfile的基本结构 Dockerfile 一般分为四部分:基础镜像信息.维护者信息 ...

  8. SpringBoot项目部署初体验【Docker】

    前言 一个微服务项目,小到几个模块,大到十几二十几个模块,每个模块都是单独的SpringBoot工程,这么多模块的部署,部署成本真的很高,而且每个服务的部署,都是手动部署,打成war或者jar ?,一 ...

  9. dockerfile的编写参数

    注意细节 “#”号开头是注释 ,指令不区分大小写,顺序执行 FROM 指定基础镜像:注意必须是文件里第一个非注释行 ENV name 值 设置变量,注意没有=号 变量引用 ${name:-chenxi ...

随机推荐

  1. Global AI Bootcamp 2019 宁波站活动总结

    2019年12月14日,由微软MVP技术社区发起的Global AI Bootcamp 2019盛会在全球60多个国家130个城市点燃.在大中华区,本次活动由全国众多Azure专家及微软MVP技术社区 ...

  2. java之位运算符

    整型转二进制:Integer.toBInaryString(6) <<:左移,3<<2 = 3*2*2 = 12 >>:右移,3>>1 = 3/2 = ...

  3. php foreach 的效率问题

    结果: 结论:多数情况下,循环时不带$k的foreach执行速度较快,建议没有使用到$k时,尽量不写

  4. IT兄弟连 Java语法教程 流程控制语句 分支结构语句5

    5  switch-case条件语句 Java中的第二种分支控制语句时switch语句,switch语句提供了多路支持,因此可以使程序在多个选项中进行选择.尽管一系列嵌套if语句可以执行多路测试,然而 ...

  5. 08-Django模板(2)

    一.HTML转义 在视图中,通过调用模板传递下文,模板对上下文的传递字符串进行输出时,会对以下字符自动转义.HTML转义的作用:转义后标记代码不会被直接解释执行,而是被直接呈现,防止客户端通过嵌入js ...

  6. Nginx之前后端分离(入门)

    几个月前,公司架构优化,首先就是前后端分离. 所谓前后端分离,就是在传统的前后端代码都在一个项目里的基础上,将前后端代码抽离,把前端代码从后端项目了分离出来,前后端开发人员各自在自己的项目里开发. 为 ...

  7. mysqlslap详解--MySQL自带的性能压力测试工具(转)

    本文的参考博客地址为:https://blog.csdn.net/fuzhongfaya/article/details/80943991 和 https://www.cnblogs.com/davy ...

  8. docker 集群管理gui

    k8s: https://www.rancher.cn/ swarm: https://github.com/dockersamples/docker-swarm-visualizer https:/ ...

  9. jxl解析excel时,处理中文乱码问题

    jxl解析excel时,处理中文乱码问题 一般出现较多的问题是,当exce中包含了中文或特殊字符时,在解析时候就会出现乱码现象. 解决方法为: InputStream in = new FileInp ...

  10. MySQL学习——操作表里的数据

    MySQL学习——操作表里的数据 摘要:本文主要学习了使用DML语句操作表里数据的方法. 插入数据 语法 通过传入数据插入: insert into 表名 [(列名1, …, 列名n)] values ...