DockerFile命令说明

镜像的构建文件

通过build构建成新的镜像

如:将myfile文件构建成新镜像

  • myfile
FROM centos
CMD echo "==========run success==========="
CMD /bin/bash
  • build
docker build -f ./myfile.txt -t lwx/mycentos .

注意:

  • 指定必须为大写字母,且后面不能为空
  • 从上到下顺序执行
  • # 表示注释
  • 每条指定都会创建一个新的镜像层并进行提交

DockerFile的运行流程

1、docker从基础镜像运行一个容器

2、执行一条指令并对容器进行修改

3、生成一个新的镜像

4、基于新镜像创建一个新的容器

5、依次执行,直到所有指定都执行完

FROM

引用镜像,如

FROM centos

scratch所有镜像的顶层

MAINTAINER

镜像的维护者,可以填加姓名和邮箱等

MAINTAINER lwx is a good boy and email is itweixiang@126.com

RUN

容器构建时需要运行的命令

如:在使用centos作为父镜像时,安装vim

RUN yum -y install vim

EXPOSE

暴露的端口

EXPOSE 6379

WORKDIR

创建容器后,终端登录后默认的路径,没有指定时默认到/目录

WORKDDIR /

ENV

设置环境变量,可以配合其它命令使用

ENV WORK_HOME /work
WORKDIR $WORK_HOME

ADD & COPY

将所需要的压缩包拷贝到镜像中,COPY只是拷贝,ADD拷贝后还会进行解压缩

  • ADD

如宿主中的jdk拷贝到镜像中

ADD /data/jdk1.8.0-openjdk.tar.gz /usr/local
  • COPY

不做赘述

VOLUME

为镜像添加数据卷

VOLUME ["/volume1","/volume2"]

该方式没有指定宿主机的目录,所以docker会分配一个默认的位置,可以通过docker inspect containerID进行查看。

CMD & ENTRYPOINT

两者都是执行命令

  • CMD

DockerFile可以有多个CMD命令,但只有最后一个生效,而且会被docker run后的命令替换

如:完成后打开终端

CMD /bin/bash

大部分Linu发行版的基础镜像里面调用CMD命令, 指定容器启动后执行/bin/sh或/bin/bash. 这样镜像启动默认进入交互式的shell

  • ENTRYPOINT

ENTRYPOINT用法与CMD类似,但是它不会被docker run后的命令替换,如需替换,则需要加上--entrypoint的参数。

如:

ENTRYPOINT /bin/bash

ONBUILD

父镜像被子镜像继承后,父镜像的ONBUILD会被触发,该命令可以配合其他命令使用

如:在子镜像运行时,父镜像打印一句话

ONBUILD RUN echo "Father image is running"

自定义DockerFile

centos

FROM centos
ENV BASH /bin/bash
ENV LOCATION /usr/local/
WORKDIR $LOCATION
MAINTAINER author:lwx email:itweixiang@126.com 
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD $BASH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值