Dockerfile文件中包含了很多指令

  1. 通过这个脚本文件,可以build出一个镜像
  2. 因此通过Dockerfile,我们可以自动化地在任何其他机器上重建相同的编译环境

使用步骤:

  1. 编写一个dockerfile文件
  2. docker build 构建成一个镜像
    1. build名称为Dockerfile的文件:docker build -t ubuntu-test:latest .
    2. build自定义名称的Dockerfile文件:docker build -t ubuntu-test:latest -f Dockerfile.custom .
  3. docker run 运行镜像
  4. docker push 发布镜像(DockerHub)

Dockerfile指令

  1. 每个指令都是大写
  2. 执行从上到下,并且每一条指令对应镜像的一层,这和镜像的分层结构很契合
  3. #表示注释
  1. FROM #基础镜像
  2. MAINTAINER #作者:姓名+邮箱
  3. RUN #镜像构建时,需要执行的命令
  4. ADD #添加文件
  5. COPY #将文件拷贝到镜像中
  6. WORKDIR #工作目录
  7. VOLUME #挂载目录
  8. EXPOSE #指定暴露端口
  9. ENV #构建时,设置环境变量
  10. CMD #指定容器启动时,需要运行的命令
  11. #docker run后接的命令,会将CMD替换掉
  12. ENTRYPOINT #指定容器启动时,需要运行的命令(与CMD有区别)
  13. #docker run后接的命令,会被追加到ENTRYPOINT命令的后面
  14. ONBUILD

发布镜像

发布到docker hub中

  1. docker login -u <username>
  2. # 再输入密码
  3. docker tag <镜像ID> <tag> #为镜像添加一个tag
  4. docker push <作者名字>/<镜像名称>:<tag> #push对应的镜像

示例

Tomcat

  1. 编写Dockerfile文件,名字为mytomcat-dockerfile ```dockerfile FROM centos #父镜像 MAINTAINER geodoergeodoer@163.com #作者

COPY readme.txt /usr/local/readme.txt #将./readme.txt文件拷贝到指定目录

ADD jdk-Build-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/

  1. #将本地文件..拷贝到指定目录下。ADD命令会自动解压

RUN yum -y install vim RUN yum -y install net-tools

ENV MYPATH /usr/local #进入时的目录 WORKDIR $MYPATH #工作目录

ENV JAVA_HOME /usr/local/jdk1.8.0_11 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22 ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080 #往外暴露8080端口

CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/cataline.out

CMD echo “——end——“
CMD /bin/bash #进入bash

  1. 2. 生成镜像,并运行
  2. ```dockerfile
  3. docker build -f mytomcat-dockerfile -t mytomcat:0.1 .
  4. #-f dockerfile文件
  5. #如果文件名是Dockerfile,这个参数就可以省略
  6. #-t <镜像名>:<tag>
  7. #. 当前目录
  8. docker run -d -p 9090:8080 --name mytomcat1 -v /home/build/tomcat/test:usr/local/apache-tomcat-9.0.22/webapps/test ...

可以使用以下命令,查看镜像ID

  • 看到镜像的构建过程
    1. docker history <镜像ID>