第八章 使用Dockerfile创建镜像

Posted lingxiaolong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第八章 使用Dockerfile创建镜像相关的知识,希望对你有一定的参考价值。

Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定呀镜像。

8.1 基本结构

       一般而言,Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。

例如:

[[email protected] ~]# mkdir nginx

[[email protected] nginx]# vi Dockerfile

#docker for nginx

FROM ubuntu:14.04

MAINTAINER lxldoudou [email protected]

RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/source.list

RUN apt-get update && apt-get install -y nginx

RUN echo " daemon off;" >> /etc/nginx/nginx.conf

CMD /usr/sbin/nginx

        然后保存、退出

[[email protected] nginx]# docker build -t="ubuntu:nginx" .

#后面记得写Dockerfile的路径

#这样的话就可以创建一个安装了nginx的ubuntu镜像

8.2 指令说明

  1. Dockerfile中以#开头的行全为注释行
  2. FROM <image>:<tag> 指定基础镜像
  3. MAINTAINER <name> 指定维护者信息
  4. RUN <command> 或 RUN ["executable file", "parameter1", ...] 在当前镜像中执行指定命令,执行的结果会被镜像保存
  5. CMD 用法类似于RUN,用于指定Docker容器启动时执行的命令。Dockerfile中只能有一个CMD,并且此CMD命令会被启动Docker容器时指定的参数覆盖
  6. LABEL <key>=<value> <key>=<value> 为Docker镜像指定meta信息,同时会覆盖基础镜像中的meta信息
  7. EXPOSE <port> <port> .... 指定暴露的端口号
  8. ENV <key>=<value> 或者 ENV <key> <value> 指定镜像的环境变量,会被镜像保存下来
  9. ADD <src> <des> 拷贝主机的文件或者目录到镜像中。此命令会自动解压tar文件
  10. COPY <src> <des> 和ADD命令类似,但此命令不会自动解压tar文件
  11. ENTRYPOINT <command> 或 ENTRYPOINT ["executable file", "parameter1", ...] 配置容器启动后启动的命令,类似CMD,但此命令不会被启动Docker容器时指定的参数覆盖
  12. VOLUME ["/data/"] 指定一个可以从主机或者其他容器挂载的挂载点
  13. USER username 指定后续操作所用的用户名
  14. WORKDIR <dir path> 为后续操作指定工作目录
  15. ONBUILD <command> 指定当此镜像作为基础镜像时指定的命令,会在FROM之后执行

8.3 创建镜像

        编写完Dockerfile之后,可以通过docker build 命令来创建镜像。

-f:指定Dockerfile的路径

-t:指定生成镜像的标签信息

8.4 实战-Dockerfileapache

[[email protected] ~]# mkdir apache

[[email protected] ~]# cd apache/

[[email protected] apache]# vi Dockerfile

FROM httpd:2.4

COPY ./public-html /usr/local/apache2/htdocs/

[[email protected] apache]# mkdir public-html

[[email protected] apache]# vi public-html/index.html

<!DOCTYPE html>

        <html>

                <body>

                        <p>Hello, Docker!</p>

                </body>

        </html>

[[email protected] apache]# docker build -t apache2 .

[[email protected] apache]# docker images

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE

apache2                       latest              cc2305fc3d5d        18 seconds ago      178 MB

[[email protected] apache]# docker run -it --rm --name apache-container -P apache2:lates

[[email protected] nginx]# curl http://192.168.161.128:32768

<!DOCTYPE html>

<html>

<body>

<p>Hello, Docker!</p>

 

</body>

</html>

 

以上是关于第八章 使用Dockerfile创建镜像的主要内容,如果未能解决你的问题,请参考以下文章

Docke--Dockerfile实践

Docke--Dockerfile 构建LNMP环境

docke--Dockerfile构建docker镜像

Docker 数据管理容器互联 与 镜像的创建编译(DockerFile)

使用Dockerfile定制自己的docker镜像

docker-4-Dockerfile配置文件详解