Dockerfile构建过程

基础知识:

  1. 每一个保留关键字(指令)都必须是大写字母
  2. 执行是从上到下顺序执行
  3. 表示注释

  4. 每一个指令都会创建提交一个新的镜像,并提交!

image.png
步骤:
dockerfile:构建文件,定义了一切的步骤,源代码
dockerimages:通过Dockerfile 构建生成的镜像,最终发布和运行的产品
docker容器: 容器就是镜像运行起来提供服务

DockerFile的指令

  1. 编写Dockerfile
  2. Dockerfile语法格式:
  3. FROM:基础镜像.一切从这里开始构建
  4. MAINTAINER:镜像创建者信息(姓名+邮箱)
  5. EXPOSE:开放的端口
  6. ENV:设置环境变量
  7. ADD:复制文件到镜像
  8. RUN:制作镜像时执行的命令,可以有多个
  9. WORKDIR:定义容器默认工作目录
  10. - VOLUME:挂载的目录
  11. CMD:容器启动时执行的命令,仅可以有一条CMD 可以被替换
  12. - ENTRYPOINT:指定容器启动的时候要运行的命令,可以追加命令(ENTRYPOINT ["ls","-a"])
  13. - COPY #类似ADD,将我们的文件拷贝到镜像中
  14. FROM
  15. #####从头制作baseImage
  16. FROM search
  17. RUN: 执行命令,每执行一条run,多一个分层,一般用&&合并语句,反斜杠“\”换行
  18. RUN yum -y update && yum -y install lrzsz \
  19. net-tools
  20. RUN apt-get -y update && apt-get -y install lrzsz \
  21. net-tools
  22. RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'
  23. WORKDIR :进入或创建目录,使用绝对路径
  24. #####进入/root 目录
  25. WORKDIR /root
  26. 如果目录没有会自动创建
  27. WORKDIR /test
  28. WORKDIR demo
  29. //输出:/test/demo
  30. RUN pwd
  31. ADD COPY:将本地的文件,添加到image
  32. //将hello 添加到根目录下
  33. ADD hello /
  34. //将tar包直接解压到跟目录
  35. ADD test.tar.gz
  36. NNV: 增加Dockerfile 的可读性
  37. //设置常量
  38. ENV MYSQL_MAJOR 5.5
  39. //使用常量
  40. $MYSQL_MAJOR

image.png

案例: tomcat镜像制作

tomcat官网下载tomcat包
https://tomcat.apache.org/
apache-tomcat-9.0.38.tar.gz

[root@docker1-60 dockerfile_test]# cat dockerfile_tomcat 
FROM cf49811e3cdb
MAINTAINER lvyufei
COPY readme.txt /usr/local/readme.txt
ADD apache-tomcat-9.0.38.tar.gz /usr/local/
RUN yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-deadless vim net-tools

ENV MYPATH /usr/local/
WORKDIR $MYPATH
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.38/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.38/logs/catalina.out
[root@docker1-60 dockerfile_test]# docker build -f dockerfile_tomcat -t diytomcat .
[root@docker1-60 dockerfile_test]# docker image ls
REPOSITORY                 TAG                             IMAGE ID            CREATED             SIZE
diytomcat                  latest                          7916478ad3ec        10 minutes ago      560MB
[root@docker1-60 dockerfile_test]# docker run -d -p 8081:8080 --name lvyufei -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.38/webapps/test -v /home/tomcat/logs/:/usr/local/apache-tomcat-9.0.38/logs diytomcat:latest