docker build命令

一. docker build

docker build : 从Dockerfile创建一个镜像

docker build 命令从Dockerfile和上下文构建docker镜像。构建过程可以引用上下文中任何文件,上下文路径下文件过多会导致构建过程缓慢,因而上下文路径下不用存放无用文件。

二. Dockerfile

Dockerfile 指令

FROM 基础镜像。

COPY 复制,从上下文路径复制文件或目录到容器内指定路径。

ADD 与COPY相似,不同之处在于:ADD在源文件为压缩文件时,会自动复制并解压到目标路径。(推荐使用COPY)

RUN 运行程序,在dokcer build时。

CMD 运行程序,在docker run时运行。(若Dockerfile中存在多个CMD命令,仅最后一个生效;在docker run中指定要运行的程序时,CMD会被覆盖)

ENTRYPOINT 类似于CMD命令,但不会被docker run指定的命令覆盖,这些命令行参数会被当作参数送给ENTRYPOINT。

ENV 设置环境变量。

ARG 与ENV作用一致,但ARG设置的变量仅在Dockerfile内有效,仅作用于docker build过程,构建好的镜像内不存在此变量。

VOLUME 设置匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

WORKDIR 指定工作目录。(必须提前创建好)

LABEL 给镜像添加一些原数据,以键值对的形式。

三. 例子

FROM python:3
WORKDIR /home
COPY * ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 

CMD echo "run flask docker"
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

从Dockerfile创建镜像

直接运行镜像,CMD命令执行,打印”run flask docker”

run时,镜像后指定 命令python helloworld.py ,CMD命令被覆盖