dockerfile

自定义镜像-------通过dockerfile创建镜像

创建镜像的方式:

1.dockerfile最基本的方式 最常用的方式

2.docker pull 拉取的是最基础的镜像,只能做基础功能,没有定制化的功能

3.基于基础镜像,创建好了容器之后在容器内部进行定制化的操作,然后导出镜像,下一次继续使用


基于dockerfile创建:

联合文件系统:UionFS

这个是DOKER镜像的基础,镜像通过分层来进行集成.继续基础可以制作各种具体的应用镜像。特性:一次性同时的加载多个文件系统,但是从外看至能看一个文件系统.文件系统叠加。
镜像加载的原理:
--层一层的文件系统自称的
rootfs:根文件系统,包含了一个完整的文件系统(操作系统),包括了所有的文件和目录。以及相关的权限和用户等信息,
运行容器时,整个的根文件系统就会整个被使用,作为应用的运行的环境。
bootfs:引导文件系统启动根系统时需要加载的核心文件。

dockfile定制化镜像:定制每一层需要添加的配置和文件。把每一层的修改,安装,构建和操作都写入到一个脚本。
用脚本来进行创建镜像。
这个脚本就是dockerfile



dockfile分为四个部分:


1、基础镜像信息 底层
2、维护者信息(可有可无)
3、镜像的操作指令和相关配置
4、容器启动时执行的命令

可以支持#开头作为注释



dockerfile的命令:


FROM: 永远是整个脚本第一个语法,指定定制镜像的基础操作系统。
MAINTAINER: 维护者信息,可以不写 新版本用LABEL来代替了
RUN: 在基础镜像上执行的命令,然后把运行结果整合到新镜像当中。RUN就是一个镜像的分层 run越多,分层就越多,镜像越大。为了控制镜像的大小,多个RUN尽可能的写在一个RUN里面
ENTRYPOINT:指定容器在启动时执行的命令或者参数
CMD:指定容器在启动时执行的命令或者参数
EXPOSE:指定容器对外暴露的端口号
ENV: 用来设置基础操作系统的环境变量,以便RU命令使用或者新镜像使用,就是给系统添加环境变量。
ADD:支持URL从网络下载文件,也可以对压缩文件进行解压
COPY: 只能复制本地文件(宿主机文件)到镜像的目标为止
VOLUME: 创建一个容器内的挂载点,不是和宿主机进行挂载。
USER: 设置运行镜像时用户
WORKDIR: 执行容器的工作目录,相当于切换到这个目录,在这个目录下做指定的操作。
ONBUILD: 指定一个镜像作为另一个镜像构建的基础时需要运行的命令。
ARG: ARG用来传参数,用户传递的参数,ENV是容器内部的变量

ENTRYPOINT和CMD的区别


1、 cmd可以把参数传递给ENTRYPOINT

2、 多个ENTRYPOINT和多个CMD只会运行最后一个(一个dockerfile当中只会有一个ENTRYPOINT和一个CMD)

3、 ENTRYPOINT的指令不会被覆盖,CMD的指令如果在docker run后面加上输出,会被覆盖。

4、 ENTRYPOINT和CMD的指令在容器启动时执行,都会成为容器的主进程。主进程负责接收信号,处理容器的声明周期,容器退出,容器也将终止运行。

COPY和ADD的区别


COPY和ADD都可以把本地文件复制到镜像中,但是官方推荐如果是复制使用COPY

区别:

ADD可以解压。如果是一个压缩文件,ADD在复制之后会自动解压(tar.gz tar.gz2)支持URL路径下载源文件。支持下载,但是不能解压了。通过URL拷贝的文件无法自动解压。

COPY只能复制,不能解压,而且只能是本地文件,不支持URL路径


RUN命令的优化

主要是减少镜像的层数,把多个RUN命令写在一块。

1、 &&符号:

RUN yum -y install nginx && make -j 4 && make install
前一个命令执行成功才会执行下一个命令

2、 ;符号:了解即可

RUN yum -y install nginx ; make -j 4 ; make install
执行失败也会执行下一个

3、 ||符号:逻辑或。了解即可

RUN yum -y install nginx || make -j 4 || make install

4、 \符号:可以理解为换行

RUN yum -y install nginx \
make -j 4 \
make install
提高可读性

Dockerfile创建镜像

所有的Dockerfile都叫Dockerfile

FROM centos:7
 
MAINTAINER "this is my docker <zyg>"
 
ENTRYPOINT ["echo","hello"]
 
CMD ["world"]
 
docker build -t centos7:test .
#.:使用当前dockerfile文件
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值