前言
————————————————————————————————————
本文安装docker的基础是linux centos7系统,使用终端模拟软件xshell,有需要安装教程的同鞋可以戳我之前的博客
VMware下载,安装及创建虚拟机
VMware安装Centos7 究极逐步详细图文流程
上节内容↓
Docker零基础入门——3.Docker之数据卷和数据卷容器
之前概念篇我们没有提到dockerfile,是因为他只从概念来讲的话,比较简单,难在他的指令书写和编排上,这里我们大概了解一下。
dockerfile 其实就是用来构建docker image 的构建文件,是由一系列的命令和参数组成的脚本。
我们在docker hub 官网上看到的对应容器的code tab,里边就是dockerfile的内容
比如说tomcat,你在官网都可以直接查看到他的dockerfile脚本代码。
dockerfile脚本的基本使用规则是
→1.每一行保留字必须大写
→2.后边至少跟上一个参数
→3.指令由上到下顺序执行
→4.井号是注释行
→5.每一条指令都会创建一个新的镜像层,并对镜像提交
指令很多,我们挑一些简单常用的进行说明
语法:
FORM <image> 或 FORM <image>:<tag>
举例:
FROM centos:7
表明此镜像基于centos:7镜像
语法:
MAINTAINER <...>
举例:
MAINTAINER The CentOS Project <[email protected]> - ami_creator
语法:
RUN <command> 或 RUN ["命令", 参数1, 参数2]
举例:
RUN mkdir -p "$CATALINA_HOME"
语法:
EXPOSE <port> [<port>...]
举例:
EXPOSE 8080
我们的tomcat就是暴露8080端口的
语法:
WORKDIR <path>
举例:
WORKDIR $CATALINA_HOME
语法:
ENV <name> <value>
举例:
ENV CATALINA_HOME /usr/local/tomcat
语法:
ADD <src> <dest>
举例:
ADD centos-7-x86_64-docker.tar.xz /
拷贝.tar到容器根目录并解压
语法:
COPY src dest 或 COPY ["src", "dest"]
举例:
COPY centos-7-x86_64-docker.tar.xz /
拷贝.tar到容器根目录(不会自动解压)
语法:
VOLUME ["/data" ...]
举例:
VOLUME ["/dataVolumeContainer1", "/dataVolumeContainer2"]
语法有三种格式:
<1> CMD ["executable","参数1","参数2"...] 使用exec执行,推荐使用
<2> CMD command 参数1 参数2... 在/bin/sh中执行,提供给需要交互的使用
<3> CMD ["参数1","参数2"...] 提供给ENTRYPOINT的默认参数
举例:
CMD ["catalina.sh", "run"]
dockerfile 应当只有一条cmd命令,如果指定了多条,则会覆盖,最终只有最后一条会被调用
语法有两种格式:
<1> ENTRYPOINT ["executable","参数1","参数2"...]
<2> ENTRYPOINT command 参数1 参数2... shell中执行
举例:
ENTRYPOINT ["curl", "-s", "xxx.com"]
比方说你执行了如下命令
docker run -it xxximages:xxx -i
最终执行时会把CMD的参数"-i"追加到ENTRYPOINT参数中,为:
ENTRYPOINT [“curl”, “-s”, “-i”, “xxx.com”]
语法:
ONBUILD [INSTRUCTION]
举例:
ONBUILD RUN echo "build form A镜像"
我们使用dockerfile脚本的顺序一般如下
→1.编写dockerfile
→2.build dockerfile 获得镜像文件
→3.docker run 通过镜像生成容器
现在开始让我们按照上边顺序自己里定义一个dockerfile
直接上dockerfile代码
FROM centos:7
MAINTAINER cjl<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo "clearlove77777"
CMD /bin/bash
这是非常简单的一个dockerfile了,我们将其build编译为镜像
语法:docker build -f <dockerfilename> -t <image> .
注意这一行的末尾,是有一个英文句号的,表明是在当前目录
举例:docker build -f dockerfile1 -t cjl_centos:1.0 .
因为dockerfile中有安装的命令,导致下载时打印在控制台上的东西过多,这里我就只截图开始和结束了,
下来再使用docker run 通过镜像生成容器
docker run -dit image7:1.0
首先查看生成的镜像
再启动容器,之前我们指定了workdir是 usr/local,进入容器查看一下是不是这样
一发入魂,么得毛病
OK,dockerFile就简单先介绍到这了,在我们实际使用的时候构建dockerfile才是使用docker的基础核心,希望大家可以继续学习其他的指令,我们下节再见。