Dockerfile

Dockerfile简介

1-Dockerfile基本介绍

基本结构
Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义镜像。

Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。

Docker分为四部分:

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时默认要执行的指令
    例如:
# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: GIN
# Command format: Instruction [arguments / command] ...

# 第一行必须指定基于的基础镜像
FROM ubuntu

# 维护者信息
LABEL MAINTAINER='GIN 163@163.com'

# 镜像操作指令
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# 容器启动时默认要执行的指令
CMD /usr/sbin/nginx
其中,一开始必须指明所基于的镜像名称,接下来一般会说明维护者信息。
后面则是镜像操作指令,例如RUN指令,RUN指令将对镜像执行跟随的命令。每运行一条RUN指令,镜像添加新的一层,并提交。
最后是CMD指令来指定运行容器时的操作指令。

2-Dockerfile构建过程

基础:

每条保留字指令必须为大写字母,且后面至少要跟随一个参数
指令按照从上到下,顺序执行
#表示注释
每条指令都会创建一个新的镜像层,并对镜像进行提交
应用软件的角度看,DockerFile、Docker镜像与Docker容器分别代表软件的三个不同阶段:

  • DockerFile是软件的原材料
  • Docker镜像是软件的交付品
  • Docker容器则可以认为是软件的运行态。
  • DockerFile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

在这里插入图片描述

详细解释:

  • DockerFile,需要定义一个DockerFile,DockerFile定义了进程需要的一切东西。DockerFile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这是需要考虑如何涉及namespace的权限控制)等到。
  • Docker镜像,在用DockerFile定义一个文件后,docker build会产生一个- Docker镜像,当运行Docker镜像时,会真正开始提供服务。
  • Docker容器,容器直接提供服务。

3-Dockerfile指令用法

指令
指令的一般格式为INSTRUCTION arguments,指令包括:

FROM			#基础镜像,当前镜像是基于哪个镜像的
MAINTAINER		#镜像作者 姓名+邮箱
RUN				#容器构建是需要运行的命令(构建镜像中执行一些命令,如Redis的DockerFile中的run命令建立用户组)
ADD				#将宿主机目录下的文件拷贝进镜像,且 ADD命令会自动处理URL和解压tar文件
COPY			#类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录<源路径>的文件/目录复制到新的一层的镜像内<目标路径>位置。
VOLUME			#容器数据卷,用于数据保存和持久化工作
CMD				#指定容器启动时要运行的命令。DockerFile中可以有多个CMD指令,但只有最后一个生效(覆盖),CMD会被docker run 之后的参数替换
ENTRYPOINT  	#指定容器启动时要运行的命令。ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序以及参数(但是不会被覆盖)
EXPOSE			#当前容器对外暴露的端口
WORKDIR     	#指定在创建容器后,终端默认登录(启动后的工作目录)进来的工作目录,一个落脚点
ENV				#用来在构建镜像过程中设置环境变量
ONBUILD     	#当构建一个被集成的DockerFile时运行命令,父镜像在被子集成后父镜像的ONBUILD被触发

格式为FROM 或FROM :。

第一条指令必须为FROM指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)。

LABEL MAINTAINER
格式为LABEL MAINTAINER ,指定维护者信息

RUN
格式为RUN 或RUN [“executable”,“param1”,“param2”]。

前者将在shell终端中运行命令,即/bin/sh -c;后者则使用exec执行。指定使用其他终端可以通过第二种方式实现,例如:

RUN ["/bin/bash","-c","echo hello"]

每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用 \ 来换行,例如:

RUN echo "hello world\nhello tom" > /tmp/abc && \
    cat /tmp/abc

CMD
CMD支持三种格式&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值