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