docker系列6:dockerFile构建镜像

一、dockerFile简介:

dockerfile用于构建Docker镜像,DockerFile涉及的内容 包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进 程和内核进程等等。在docker环境下,项目从开发到运行的流程为:开发应用、编写DockerFile文件、构建为镜像、上传到仓库(私有仓库,公有仓库)、 下载镜像、启动运行。

 

二、dockerFile构建过程:

1、编写DockerFile文件

2、docker build 构建镜像

3、docker run

 

三、dockerFile基本指令

FROM # 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER # 镜像维护者的姓名混合邮箱地址
RUN # 容器构建时需要运行的命令
EXPOSE # 当前容器对外保留出的端口
WORKDIR # 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV # 变量
ADD # 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY # 类似ADD,拷贝文件和目录到镜像中!
VOLUME # 容器数据卷,用于数据保存和持久化工作
CMD # 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效!
ENTRYPOINT # 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD # 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD被触发

四、dockerFile构建自定义镜像

案例一、在自定义镜像centos下安装vim命令

1、检查宿主机中是否存在centos镜像,如果不存在则下载镜像:docker pull centos

 

2、在宿主机中的/home目录下新建并编写dockerfile文件

FROM centos     # 基础镜像

MAINTAINER xueheng<24736743@qq.com>  # 镜像维护者的姓名混合邮箱地址

ENV MYPATH /usr/local    # 定义一个变量

WORKDIR $MYPATH    # 指定在创建容器后,终端默认登录的进来工作目录/usr/local

RUN yum -y install vim    # 容器构建时需要运行的命令

RUN yum -y install net-tools    # 容器构建时需要运行的命令

EXPOSE 80    # 当前容器对外保留出的端口

CMD echo $MYPATH
CMD echo "----------end--------"
CMD /bin/bash    # 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效!

3、构建镜像。在dockerfile文件所在目录下执行构建,注意后面有个点

docker build -f dockerfile -t custom_centos:0.1 .

4、查看镜像:docker images

5、进入镜像,检查在dockerfile文件中设置的根目录是否生效

6、检查vim命令是否可用

案例二、在自定义镜像centos下安装jdk

1、在宿主机中的/home目录下新建custom_centos目录。准备c.txt文件以及jdk

 

2、在custom_centos目录下编写dockerfile文件

FROM centos
MAINTAINER xueheng<24736743@qq.com>
#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
COPY c.txt /usr/local/cincontainer.txt
#把java添加到容器中
ADD jdk-8u161-linux-x64.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080

3、构建镜像。构建custom_centos目录,注意后面有个点

docker build -t custom_centos .

4、查看镜像:docker images

 

5、进入镜像,检查在dockerfile文件中设置的根目录是否生效

 

6、检查java命令是否可用

 

 

 

原文地址:https://www.cnblogs.com/XueTing/p/13797691.html