前缀 参数
FROM 镜像名字:tag
LABEL ‘=’ 键值对的形式书写,可以写多个
或者用空格分割
ENV ‘ ‘或’=’ 键值对的形式书写,创建Dockfile中使用的变量
本质是书写环境变量/etc/profile/
RUN 具体命令,不建议写多个
ADD 拷贝宿主机压缩包并解压
会自动创建目录
COPY 拷贝宿主机文件或目录
VOLUME 指定挂载随机数据卷的容器的目录,创建的时候使用-v就行
WORKDIR 相当于cd,配合add、copy使用
USER 设置程序用户
EXPOSE 指定容器对外暴露的端口
CMD 指定容器的入口命令,docket run可以替换
ENTRYPOINT 指定容器的入口命令,docker run 仅作为参数传入

案例

  1. # 获取ubuntu
  2. FROM ubuntu:20.04
  3. LABEL desrc="这是一个ubuntu为基础的tengine镜像" auther="clq"
  4. ENV 变量='变量名'
  5. # 开始run
  6. RUN sed -ri 's#archive.ubuntu.com|security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list \
  7. && apt-get update \
  8. && apt-get install -y wget libssl-dev make gcc pcre2-utils libpcre3-dev zlib1g-dev \
  9. && wget -P /tmp/ http://tengine.taobao.org/download/tengine-2.3.3.tar.gz \
  10. && cd /tmp/ \
  11. && tar xf tengine-2.3.3.tar.gz \
  12. && cd tengine-2.3.3 \
  13. && ./configure --prefix=/app/tools/tengine-2.3.3/ \
  14. --user=nginx \
  15. --group=nginx \
  16. --with-http_ssl_module \
  17. --with-http_v2_module \
  18. --with-http_realip_module \
  19. --with-http_stub_status_module \
  20. --with-http_mp4_module \
  21. --with-stream \
  22. --with-stream_ssl_module \
  23. --with-stream_realip_module \
  24. --add-module=modules/ngx_http_upstream_check_module/ \
  25. --add-module=modules/ngx_http_upstream_session_sticky_module \
  26. && make -j 1\
  27. && make install \
  28. && groupadd nginx \
  29. && useradd -g nginx nginx\
  30. && ln -s /app/tools/tengine-2.3.3/ /app/tools/tengine \
  31. && ln -s /app/tools/tengine/sbin/nginx /sbin/ \
  32. && rm -rf /tmp/* \
  33. && rm -rf /var/cache/*
  34. # 复制首页文件
  35. COPY index.html /app/tools/tengine/html/index.html
  36. # 暴露端口,只为了让别人看
  37. EXPOSE 80
  38. # 入口命令设置
  39. CMD ["nginx","-g","daemon off;"]
  • 构建镜像

docker build -f 名字.dockfile -t "设置镜像名字" 文件目录 # 如果文件名就叫Dockerfile可以不用-f

  • 运行镜像

docker run -d -p 80:80 --name "tengine-dockerfile-container" tengine:2.3.3-dockerfile-clq

  • 进入镜像

docker exec -it tengine-dockerfile-container /bin/bash

多阶段提交案例