制作镜像
通过容器制作镜像
docker commit <容器名称或容器ID> <镜像名称:版本号>
通过Dockerfile构建镜像
使用Dockerfile构建python项目镜像
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
指定运行容器时的用户名或UIDRUN
构建镜像时运行的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
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。