使用DockerFile监本构建镜像
DockerFile是由一系列命令和参数构建的脚本
是一个镜像的描述版本
build 参数详解
DockerFile 创建容器卷
创建dockerfile文件
FROM centosVOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]CMD echo "finished,-----success1"CMD /bin/bash
DockerFile生成镜像
切记有点,如果本地有centos会快很多,不然会从远程拉取在
docker build -f d:/Docker/DockerFile -t zql/centos1 .
创建之后会有对应的宿主机的共享文件夹对应 查看
docker inspect 容器ID
“Volumes”:这个里面会有信息
DockerFile 命令
FROM 继承镜像
基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER 镜像作者
镜像维护者的姓名和邮箱地址
RUN 执行shell命令
容器构建时候需要运行的命令,执行具体的shell 命令
EXPOSE 暴露端口
当前容器对外暴露的端口
WORKDIR 工作目录
指定在创建容器后,终端默认登陆的进来工作目录,一个逻辑点,默认进入目录
ENV 环境变量
用来构建镜像过程中的环境变量
ADD 复制文件&解压
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY 复制文件
类似ADD,拷贝文件和目录到镜像中
将从构建上线文目录中<原路径>的文件、目录复制到新一层的镜像内的<目标路径>位置
COPY src destCOPY ["src","dest"]
VOLUME 共享目录
容器数据卷,用于数据保存和持久化工作。和上级下级镜像共享文件夹
CMD 执行shell(最后一个)
指定一个容器启动时候要运行的命令
DockerFIle中可以有多个CMD指令,但是只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT 执行shell
指定一个容器启动时要运行的命令
ENTRPPOINT的目的和CMD一样,都是在指定容器启动程序及参数,不会覆盖,追加模式
ONBUILD 父镜像触发器
当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发
创建DockerFile
FROM centosRUN yum install -y curlENTRYPOINT ["curl","-s","]ONBUILD RUN echo 'father---onbuild'
生成images
docker build -f DockerFile3 -t my_father_centos .
创建子DockerFile
FROM my_father_centosRUN yum install -y curlENTRYPOINT ["curl","-s","]
生成子images
docker build -f DockerFile4 -t my_son_centos .
案例
base镜像(search)Docker Hub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的
案例解析
精简版的centos 只是拥有内核,没有其他,目的实现有其他shell的
自定义mycentos
登陆后的默认路径VIM 编辑器查看网络配置ifconfig
编写DockerFile
FROM centosENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vim RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATHCMD echo 'ok'CMD /bin/bash
DockerFile build 镜像
docker build -f DockerFile2 -t mycentos:1.3 .
CMD 可以执行,但是解析不了shell命令,只能是最后一个
镜像构建历史
docker history 镜像ID或者名称