Docker Dockerfile 学习笔记

什么是 Dockerfile?

Dockerfile 是用于构建 Docker 镜像的文本文件,其中包含了一系列指令和配置信息,从而可以在 Docker 中自动化构建容器镜像。通常情况下,我们会把这些 Dockerfile 文件存放在项目代码库中,并利用它们来构建、管理和发布 Docker 镜像。

Dockerfile 常用指令

FROM

指定 Docker 镜像的基础镜像,也就是从哪个镜像作为起点来构建我们的镜像。例如:

Copy Code
FROM ubuntu:18.04

RUN

运行命令,可以在构建过程中执行任何可执行文件或 Shell 命令。例如:

Copy Code
RUN apt-get update && apt-get install -y nginx

COPY

将本地文件或目录复制到构建镜像中的指定路径。例如:

Copy Code
COPY app.py /app/

WORKDIR

设置工作目录,后续的命令都在这个目录下执行。例如:

Copy Code
WORKDIR /app

EXPOSE

声明容器运行时所监听的端口。例如:

Copy Code
EXPOSE 80

CMD

定义容器启动后默认执行的命令。例如:

Copy Code
CMD ["nginx", "-g", "daemon off;"]

实例:构建一个 Python Flask 应用

这里我们以 Python Flask 应用为例,演示如何使用 Dockerfile 构建一个 Docker 镜像。

首先,我们先创建一个 Python Flask 应用,包括以下两个文件:

Copy Code
# app.py from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run(debug=True, host='0.0.0.0')
Copy Code
# requirements.txt flask==1.1.2

接着,我们创建一个 Dockerfile 文件,用于构建 Docker 镜像。内容如下:

Copy Code
FROM python:3.8-slim-buster COPY . /app WORKDIR /app RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "app.py"]

最后,我们可以使用以下命令来构建 Docker 镜像:

Copy Code
docker build -t my-flask-app .

其中 my-flask-app 是我们为镜像取的名字。构建成功之后,可以运行下面的命令启动容器:

Copy Code
docker run -it --rm -p 5000:5000 my-flask-app

现在,可以访问 http://localhost:5000/ 来访问我们构建的 Python Flask 应用了。