使用 Dockerfile 构建镜像

2019-01-15  本文已影响67人  Lizhg

进入我的博客,了解更多!

关于 Dockerfile

在构建镜像时,可以选择使用 Dockerfile 来构建。Docker 会读取 Dockerfile 中的指令自动构建镜像。所有命令行中可以使用的 Docker 命令都能在 Dockerfile 中使用。

docker build path 命令会在 path 目录下找到 Dockerfile,然后执行 Dockerfile 中的指令;docker 会先将当前环境发送到 Docker daemon(Docker 守护进程),注意这里的当前环境指的是path目录,.代表当前目录。

大多数情况下,path 最好是一个干净的文件夹,只包含 Dockerfile 以及其他构建所必需的文件。

# 在当前目录下,通过 Dockerfile 文件构建
➜ docker build .
Sending build context to Docker daemon  6.51 MB

# DockerFile 也可以不在当前目录下,通过 -f 进行指定
➜ docker build -f /path/to/a/Dockerfile .

基本编写规则

注意:src 路径必须在构建镜像时指定的环境(路径)内部

案例

基于 centos 搭建 tomcat 环境

  1. 创建 Dockerfile 文件,完整内容如下:

    FROM centos:7
    
    ENV CATALINA_HOME /usr/local/tomcat
    ENV PATH $CATALINA_HOME/bin:$PATH
    WORKDIR $CATALINA_HOME
    
    RUN yum install -y java-1.8.0-openjdk \
      && yum install -y wget \
      && wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz \
      && mkdir -p "$CATALINA_HOME" \
      && tar -xzf apache-tomcat-9.0.14.tar.gz -C /usr/local/tomcat --strip-components=1 \
      && rm -r apache-tomcat-9.0.14.tar.gz \
      && yum clean all
    
    EXPOSE 80/tcp
    
    CMD ["catalina.sh", "run"]
    

    说明:

    • 当我们在终端上执行 yum install 命令时,会提示是否确认安装。但是我们在使用 Dockerfile 时,不会有类似的输入确认环节,所以我们可以通过在命令中指定 -y 自动确认以跳过该环节,否则将导致构建失败。
      # yum install wget
      # ...
      # Total download size: 38 M
      # Installed size: 122 M
      # Is this ok [y/d/N]:_
      
      ➜ yum install -y wget
      
    • 清理缓存和垃圾文件,避免镜像过于臃肿。
      ➜ rm -r apache-tomcat-9.0.14.tar.gz
      ➜ yum clean all
      
  2. Dockerfile 文件所在目录执行 docker build -t web:v1 .,其中 web 为镜像名称,v1 为版本号,. 指当前目录。

    ➜ docker build -t web:v1 .
    Sending build context to Docker daemon  2.048kB
    ...
    ...
    Successfully built 1354c6469ae9
    Successfully tagged web:v1
    
    ➜ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    web                 v1                  6875af3e6d82        38 seconds ago      390MB
    centos              7                   1e1148e4cc2c        3 weeks ago         202MB
    
  3. 验证镜像是否构建成功,执行以下命令后访问:http://localhost:8000/

    ➜ docker run -dit -p 8000:8080 web:v1
    

参考链接

上一篇下一篇

猜你喜欢

热点阅读