docker file
dockerfile是一个文本格式的配置文件,用户可以使用dockerfile快速的创建和自定义镜像。
docker一般由四部分组成:基础镜像信息(父镜像)、维护者信息、镜像操作、容器启动时执行的命令。dockerfile可以通过#标识注释。
dockerfile的格式都是采用“指令用户定义的内容”,注意如果在书写dockerfile时,配置了某个指令,则该指令一定要存在用户定义的内容。
配置指令
ARG:定义创建镜像过程中使用的变量 格式:ARG a run.sh 使用$a调用
FROM:指令所创建的镜像的父镜像 格式:FROM 镜像name:标签
LABEL:为生成的镜像添加元数据标签信息 格式:LABEL key=value
EXPOSE:声明镜像内服务监听端口 格式:EXPOSE 端口号1 端口号2 端口号3
ENV:指定环境变量 格式:ENV name=变量
ENTRYPOINT:指定镜像默认入口命令 容器启动时作为根命令执行
注:CMD启动容器时指定默认执行的命令:不管是ENTRYPOINT还是CMD都只有最后一条失效,但是如果是ENTRYPOINT,此时再加上一条CMD,则CMD指令将作为根命令的参数
VOLUME:创建一个数据卷并挂载到挂载点 格式:VOLUME ["挂载点绝对路径1","挂载点绝对路径2"...]
USER:指定运行容器时的用户名或UID 格式:USER 用户名
WORIDIR:配置工作目录 格式:WORKDIR 目录
注:指后续RUN,CMD,ENTRYPOINT所执行以用户登录容器时的目录
注:工作目录有时存在多个,如果工作目录都是绝对路径,则代表独立工作目录,如果是相对路径,则基于之前路径
ONBUILD:创建子镜像时指定自动执行的操作指令
STOPSIGNAL:指定退出的信号值
HEALTHCHECK:配置容器启动时如何进行健康检查
SHELL:指定默认的shell类型
操作指令
RUN:创建镜像时运行指令
注:每条RUN指令都会在当前镜像基础上进行新的封装,尽可能将RUN后面的命令&&运行
CMD:启动容器时指定默认执行的命令
ADD:添加内容到镜像 格式:ADD 本地dockerfile文件所在的相对路径下的某个需要拷贝的文件 容器内的一个决定路径或者相对于工作目的相对路径
注:
COPY:复制内容到镜像 格式:COPY 本地dockerfile文件所在的相对路径下的某个需要拷贝的文件 容器内的一个决定路径或者相对于工作目的相对路径
注:
dockerfile示例
vim /dockerfile --dockerfile示例
FROM centos:7 --指向父镜像
MAINTAINER CP --作者或邮箱
RUN yum install -y httpd --执行的命令
ADD /run.sh /run.sh --拷贝物理机的文件到容器中
RUN chmod -R 755 /run.sh \ --赋权,\代表换行
&&touch /var/www/html/index.html \ --创建文件,\代表换行
&&echo "new apache image">/var/www/html/index.html --执行赋权、创建文件、写入操作
WORKDIR /var/www/html --指定工作目录
EXPOSE 80
CMD /run.sh
docker build -f dockerfile -t apche-file:2.0 .
基于容器部署应用
模拟一个apache web的应用
1、直接pull官方的apache镜像直接使用 run一个镜像 apache基础配置由镜像制造者已经完成配置 普通apache是/var/www/html 官方容器apache是/usr/local/apache2/htdocs
2、采用较为干净镜像自己构建应用 centos镜像--run一个容器--进入容器手动安装部署apache