doccker-使用Dockerfile构建镜像

  1. 制作镜像
    1. 通过容器制作镜像
    2. 通过Dockerfile构建镜像
  2. 使用Dockerfile构建python项目镜像
    1. Dockerfile命令解释
    2. Docker build

制作镜像

通过容器制作镜像

docker commit <容器名称或容器ID> <镜像名称:版本号>

通过Dockerfile构建镜像

使用Dockerfile构建python项目镜像

参考官网:https://docs.docker.com/engine/reference/builder/

dockerfile 文件参考实例:

FROM python:3.7-alpine
RUN echo http://mirrors.aliyun.com/alpine/v3.12/main > /etc/apk/repositories \
    && echo http://mirrors.aliyun.com/alpine/v3.12/community >> /etc/apk/repositories \
    && apk update \
    && apk --update add --no-cache gcc \
    && apk --update add --no-cache g++ \
    && apk --update add --no-cache tzdata \
    && apk --update add --no-cache musl-dev \
    && apk --update add --no-cache linux-headers

ENV  TIME_ZONE Asia/Shanghai

RUN echo "${TIME_ZONE}" > /etc/timezone \
    && ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime

ENV FLASK_RUN_HOST 0.0.0.0

WORKDIR /app
VOLUME ["/app"]
COPY . .

ENV PIPURL "https://pypi.tuna.tsinghua.edu.cn/simple"

RUN pip --no-cache-dir install  -i ${PIPURL} --upgrade pip \
    && pip  install  -i ${PIPURL} -r requirements.txt \
    && pip  install  -i ${PIPURL} gunicorn \
    && chmod +x start.sh

CMD ./start.sh

构建命令

docker build .

Dockerfile命令解释

  • FROM
    构建新镜像是基于哪个镜像.FROM命令必须是Dockerfile的首个命令。

  • USER
    指定运行容器时的用户名或UID

  • RUN
    构建镜像时运行的shell命令

  • ENV
    容器启动的环境变量

  • ARG
    构建环境的环境变量

  • WORKDIR
    为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录

  • VOLUME
    声明匿名卷(run 容器时,如果没有指定-v,则docker会在会安装目录下生成一个目录,并将其容器中的该匿名卷挂载到这个目录中)

  • COPY
    拷贝文件或目录到镜像中

  • CMD
    运行容器时执行,如果有多个CMD指令,最后一个生效

Docker build

  • 忽略文件: .dockerignore
  • 指定文件: docker build -f
  • 添加标签: docker build -t
  • 不使用缓存:docker build –no-cache
  • 构建时变量:docker build –build-arg

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code