什么是Dockerfile?
- 它是一个名称为Dockerfile的文件
- 它是一个脚本文件,由一系列命令和参数构成
Dockerfile是自动构建docker镜像的配置文件,可以让用户自定义构建docker镜像,Dockerfile中的命令非常类似linux shell下的命令
一般,Dockerfile分为4部分:
(1)基础镜像(父镜像)信息
(2)维护者信息
(3)镜像操作命令
(4)容器启动命令
Dockerfile语法
Dockerfile中的语句包括2部分:
(1)注释,以井号#开头
(2)命令+参数
下面给出一个例子,其中,第一行为“注释行”,第二行为“命令+参数行”:
# Print "Hello docker!"
RUN echo "Hello docker!"
dockerfile大概有十几条命令用来构造镜像
Dockerfile实例
#
# MAINTAINER Carson,C.J.Zeong <zcy@nicescale.com>
# DOCKER-VERSION 1.6.2
#
# Dockerizing CentOS7: Dockerfile for building CentOS images
#
FROM centos:centos7.1.1503
MAINTAINER Carson,C.J.Zeong <zcy@nicescale.com>
ENV TZ "Asia/Shanghai"
ENV TERM xterm
ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo
ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo
RUN yum install -y curl wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man && \
yum install -y gcc gcc-c++ git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel && \
yum install -y --enablerepo=epel pwgen python-pip && \
yum clean all
RUN pip install supervisor
ADD supervisord.conf /etc/supervisord.conf
RUN mkdir -p /etc/supervisor.conf.d && \
mkdir -p /var/log/supervisor
EXPOSE 22
ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]
分部讲解为:
(1)注释部分
#
# MAINTAINER Carson,C.J.Zeong <zcy@nicescale.com>
# DOCKER-VERSION 1.6.2
#
# Dockerizing CentOS7: Dockerfile for building CentOS images
#
(2)FROM centos:centos7.1.1503
其中的 centos为父镜像名称,centos7.1.1503为父镜像的tag( 如果没有指定 tag ,则默认tag是latest,如果都没有则会报错)。
作为dockerfile的第一条指令,用来设置基本的镜像(基于父镜像),为后续的命令使用;
(3)MAINTAINER Carson,C.J.Zeong <zcy@nicescale.com>
MAINTAINER命令用来指定维护者的姓名和联系方式
(4)ENV TZ “Asia/Shanghai”
ENV(environment)命令用来设置环境变量,一个Dockerfile中可以写多个,本句的目的是:设置docker容器的时区为Shanghai
MAINTAINER Kai Arulkumaran <design@kaixhin.com>
RUN 命令
RUN命令会在FROM指定的镜像里执行任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到。
ENV 命令
用于设置环境变量
例子:
ENV PYTHONPATH=/root/caffe/python:$PYTHONPATH
WORKDIR 命令
设置working directory
如何编译dockerfile
sudo docker build -it imageName .
Dockerfile相关资料
登陆后可以免费观看,课程网址:https://csphere.cn/training
同时,还有课程内容记录的文档,文档地址:http://git.oschina.net/dockerf/docker-training