docker build 命令用于从一个 Dockerfile 构建一个 Docker 镜像。以下是 docker build 命令的语法及其常用选项:
基本语法
docker build [OPTIONS] PATH | URL | -
- PATH: Dockerfile 所在的路径或包含 Dockerfile 的上下文目录。
- URL: 指向 Dockerfile 或包含 Dockerfile 的上下文目录的 URL。
- -: 读取标准输入中的 Dockerfile。
常用选项
-f, --file string:指定 Dockerfile 文件路径(默认是 PATH/Dockerfile)。-t, --tag list:为镜像指定一个名称和可选标签(例如myimage:latest)。--build-arg list:设置构建时的变量值(即ARG指令)。--no-cache:不使用缓存构建镜像。--pull:始终尝试拉取更新的基础镜像。--rm:构建成功后删除中间容器(默认开启)。-q, --quiet:仅显示镜像 ID。
示例
- 从当前目录构建镜像:
docker build -t myimage:latest .
- 指定 Dockerfile 路径:
docker build -f /path/to/Dockerfile -t myimage:latest .
- 设置构建参数:
docker build --build-arg VERSION=1.0 -t myimage:latest .
- 不使用缓存构建镜像:
docker build --no-cache -t myimage:latest .
- 从 URL 构建镜像:
docker build -t myimage:latest https://github.com/user/repo.git#branch:subdir
- 读取标准输入中的 Dockerfile:
docker build -t myimage:latest - < Dockerfile
Dockerfile 示例
以下是一个简单的 Dockerfile 示例:
# 使用官方 Ubuntu 作为基础镜像
FROM ubuntu:20.04
# 设置环境变量
ENV APP_HOME /usr/src/app
WORKDIR $APP_HOME
# 复制当前目录内容到工作目录
COPY . .
# 安装依赖
RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*
# 暴露端口
EXPOSE 8080
# 运行命令
CMD ["echo", "Hello, World!"]
构建镜像
从上述 Dockerfile 构建镜像的命令如下:
docker build -t myimage:latest .
总结
docker build命令用于从 Dockerfile 构建镜像。- 支持多种选项,如指定 Dockerfile 路径、设置构建参数、不使用缓存等。
- 使用适当的选项和路径,可以灵活地构建所需的 Docker 镜像。
---
docker build -t myimage:latest . 中的.是代表什么
在 docker build -t myimage:latest . 命令中,最后的 . 表示当前目录(即命令运行时所在的工作目录)。具体来说,它指定了构建上下文的路径,也就是 Docker 引擎在构建镜像时可以访问的文件和目录的范围。
构建上下文
构建上下文是 Docker 在构建镜像时可以访问的文件和目录的集合。当你执行 docker build 命令时,Docker 将会递归地读取构建上下文目录中的所有文件,并将这些文件发送到 Docker 守护进程。Dockerfile 也应该位于这个上下文目录中,或者通过 -f 选项指定 Dockerfile 的路径。
示例解释
假设当前目录的结构如下:
.
├── Dockerfile
├── app.py
└── requirements.txt
- 命令:
docker build -t myimage:latest .
- 含义:
-
-t myimage:latest:为构建的镜像指定名称和标签(myimage:latest)。.:指定当前目录为构建上下文,Docker 引擎会读取当前目录及其子目录中的所有文件。
- Dockerfile 示例:
FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
在这个示例中:
WORKDIR /app:设置工作目录为容器中的/app目录。COPY requirements.txt requirements.txt:将构建上下文中的requirements.txt文件复制到容器的/app目录。RUN pip install -r requirements.txt:在容器中安装依赖。COPY . .:将构建上下文中的所有文件复制到容器的工作目录/app中。CMD ["python", "app.py"]:在容器启动时运行python app.py。
总结
.表示当前目录,用作构建上下文的路径。- 构建上下文包含了 Docker 引擎在构建镜像时可以访问的所有文件和目录。
- Dockerfile 和其他需要的文件应该位于构建上下文中,或通过相对路径或绝对路径指定。