当前位置:   article > 正文

Docker 学习笔记15 Dockerfile详解_centos 读取 dockfile 变量

centos 读取 dockfile 变量

一、说明

Dockerfile文件是Docker容器的描述文件,当中包含一行行命令,用来指导构建容器的顺序。

二、Dockerfile的关键字

1.关键字列表

关键字解释
FROM# 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER# 镜像维护者的姓名混合邮箱地址
RUN# 容器构建时需要运行的命令
EXPOSE# 当前容器对外保留出的端口
WORKDIR# 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV# 用来在构建镜像过程中设置环境变量
ARG构建参数,与 ENV 作用一至。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。
ADD# 将宿主机目录下的文件拷贝进镜像且 ADD 命令会自动处理 URL 和解压 tar
COPY# 类似ADD,拷贝文件和目录到镜像中!
VOLUME# 容器数据卷,用于数据保存和持久化工作
CMD# 指定一个容器启动时要运行的命令,dockerFile 中可以有多个 CMD 指令,但只有最后一个生效!
ENTRYPOINT# 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD# 当构建一个被继承的 DockerFile 时运行命令,父镜像在被子镜像继承后,父镜像的 ONBUILD 被触发
USER用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。格式:USER <用户名>[:<用户组>]
HEALTHCHECK用于指定某个程序或者指令来监控 docker 容器服务的运行状态。

2. 行合并

Dockerfile 的指令每执行一次都会在 docker 上新建一层,能合并的尽量合并,如:

FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
# 以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3. run shell 格式:

RUN <命令行命令>
# <命令行命令> 相当于在终端操作的 shell 命令。
  • 1
  • 2

4. run exec 格式:

RUN ["可执行文件", "参数1", "参数2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 相当于 RUN ./test.php dev offline
  • 1
  • 2
  • 3

二、一个简单的Dockerfile说明

1. 准备

vim run.sh
  • 1
#!/bin/bash
/usr/local/apache2/bin/httpd -D FOREGROUND
  • 1
  • 2
#新生成的镜像是基于sshd:dockerfile镜像
FROM centos:latest
MAINTAINER eden

#安装wget
RUN yum install -y wget
WORKDIR /usr/local/src

#下载并解压源码包
RUN wget http://archive.apache.org/dist/httpd/httpd-2.4.41.tar.gz
RUN tar -zxvf httpd-2.4.41.tar.gz
WORKDIR httpd-2.4.41

#编译安装apache
RUN yum -y install epel-release.noarch && yum makecache #fast
RUN yum install -y gcc make apr-devel apr apr-util apr-util-devel pcre-devel
RUN ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-so
RUN make
RUN make install

#修改apache配置文件
RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /usr/local/apache2/conf/httpd.conf

#启动apache服务
RUN /usr/local/apache2/bin/httpd

#复制服务启动脚本并设置权限
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh

#开放80端口
EXPOSE 80
CMD ["/usr/local/sbin/run.sh"]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

三、构建命令

docker build -t centos:test .
# 启动一个容器
docker run -p 80:80 -d centos:test
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号