Docker 实践 05 使用Dockerfile定制镜像
2018-03-08 10:47
961 查看
镜像的定制实际上就是定制每一层所添加的配置、文件。我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,这个脚本就是 Dockerfile。Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
官方基础镜像类型:
服务类的镜像:如 nginx、redis、mongo、mysql、httpd、php、tomcat 等;
语言应用的镜像:如 node、openjdk、python、ruby、golang 等。
操作系统镜像,如 ubuntu、debian、centos、fedora、alpine 等。
scratch,这个镜像是虚拟的概念,并不实际存在,它表示一个空白的镜像。
shell 格式:RUN <命令>,就像直接在命令行中输入的命令一样。刚才写的 Dockerfile 中的 RUN 指令就是这种格式。RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.htmlexec 格式:RUN ["可执行文件", "参数1", "参数2"],这更像是函数调用中的格式。FROM debian:jessie
RUN buildDeps='gcc libc6-dev make' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -rf /var/lib/apt/lists/* \
&& rm redis.tar.gz \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps注意:
1)使用一个 RUN 指令,并使用 && 将各个所需命令串联起来,简化为了 1 层。
2)支持 Shell 类的行尾添加 \ 的命令换行方式,以及行首 # 进行注释的格式。良好的格式,比如换行、缩进、注释等,会让维护、排障更为容易。
3)命令的最后添加清理工作的命令,删除了为了编译构建所需要的软件,清理了所有下载、展开的、apt 缓存文件,确保每一层只添加真正需要添加的东西,清理任何无关的东西。
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
Dockerfile命令详解
FROM
就是指定基础镜像,是必备的指令,并且必须是第一条指令。官方基础镜像类型:
服务类的镜像:如 nginx、redis、mongo、mysql、httpd、php、tomcat 等;
语言应用的镜像:如 node、openjdk、python、ruby、golang 等。
操作系统镜像,如 ubuntu、debian、centos、fedora、alpine 等。
scratch,这个镜像是虚拟的概念,并不实际存在,它表示一个空白的镜像。
RUN
指令是用来执行命令行命令的。shell 格式:RUN <命令>,就像直接在命令行中输入的命令一样。刚才写的 Dockerfile 中的 RUN 指令就是这种格式。RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.htmlexec 格式:RUN ["可执行文件", "参数1", "参数2"],这更像是函数调用中的格式。FROM debian:jessie
RUN buildDeps='gcc libc6-dev make' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -rf /var/lib/apt/lists/* \
&& rm redis.tar.gz \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps注意:
1)使用一个 RUN 指令,并使用 && 将各个所需命令串联起来,简化为了 1 层。
2)支持 Shell 类的行尾添加 \ 的命令换行方式,以及行首 # 进行注释的格式。良好的格式,比如换行、缩进、注释等,会让维护、排障更为容易。
3)命令的最后添加清理工作的命令,删除了为了编译构建所需要的软件,清理了所有下载、展开的、apt 缓存文件,确保每一层只添加真正需要添加的东西,清理任何无关的东西。
镜像构建
在Dockerfile文件所在目录执行:
$ docker build -t nginx:v3 .
相关文章推荐
- 使用Dockerfile定制LNMP环境镜像
- 使用Dockerfile定制镜像
- 3 使用 Dockerfile 实现 自动化构建(创建) 镜像
- Docker系列~使用Dockerfile构建镜像(三)
- 【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
- 使用dockerfile构建nginx镜像的方法示例
- 【系列3】使用Dockerfile创建带编译安装nginx服务的Centos Docker镜像
- Docker--使用Dockerfile创建镜像--RHEL7.2
- Docker-- 如何使用Dockerfile构建镜像
- Docker实战(六)之使用Dockerfile创建镜像
- Centos下Docker使用镜像和DockerFile方式搭建JAVA Web 开发环境
- docker筑基篇-04-使用Dockerfile构建自己的镜像
- 使用Dockerfile文件构建基于centOS系统的tomcat镜像
- 使用Dockerfile创建docker镜像
- Docker入门实战(二)----使用Dockerfile创建自己的镜像
- Docker--使用Dockerfile构建新镜像--RHEL7.2
- 使用Dockerfile创建支持ssh服务自启动的容器镜像
- 详解使用Dockerfile创建带Apache服务的CentOS Docker镜像
- 使用 Dockerfile 自定义 Docker 镜像
- 使用Dockerfile构建镜像并push到私有仓库