【指令篇】Dockerfile 命令

147 阅读3分钟

Dockerfile 命令

Dockerfile是一个文本文件,包含了一系列的命令和参数,用于自动构建Docker镜像。每个命令在Dockerfile中都指定了创建镜像的步骤。以下是一些常用的Dockerfile命令,以及它们的使用示例。

创建一个简单的 Dockerfile 示例

假设我们要创建一个运行 Nginx 的 Docker 镜像。

# 使用nodejs镜像用于构建代码
FROM node:18-bullseye AS builder

# 指定工作目录
WORKDIR /builder

# 定义构建参数
ARG BUILD_ENV=dev

# 复制代码到 /builder
COPY . .

# 安装依赖并构建
RUN npm install && \
    npm run build:${BUILD_ENV}

# 使用Nginx官方的基础镜像
FROM nginx:1.25.3-alpine3.18 AS server

# 添加标签
LABEL maintainer="orrn"

# 设置环境变量
ENV NGINX_VERSION 1.14

# 设置工作目录
WORKDIR /data/www

# 更换镜像源,安装命令
RUN sed -i "s|https://dl-cdn.alpinelinux.org|http://mirrors.cloud.aliyuncs.com|g" /etc/apk/repositories && \
    apk update && \
    apk add --no-cache tini

# 将本地的配置文件复制到容器中
ADD nginx.conf /etc/nginx/nginx.conf

# 将构建产物复制到服务容器中
COPY --from=builder /builder/dist /data/www

# 暴露80端口
EXPOSE 80

# 指定运行用户
USER root

# 设置运行Nginx的命令
ENTRYPOINT ["tini", "--"]

# 设置运行Nginx的命令
CMD ["nginx", "-g", "daemon off;"]

在这个Dockerfile中,我们首先用node作为基础镜像,构建代码。然后将构建产物复制到nginx镜像中,设置了环境变量NGINX_VERSION,复制了本地的nginx.conf文件到容器中,暴露了80端口,并且指定了运行Nginx的命令。

构建这个Dockerfile创建的镜像可以提供一个轻量级且配置化的前端服务。

Dockerfile 命令简介

FROM

指定基础镜像。所有Dockerfile都必须从一个FROM命令开始,用于指定一个已存在的镜像。

示例

FROM ubuntu:18.04

RUN

执行命令行命令。常用于安装软件包。

示例

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

CMD

提供容器默认执行的命令。Dockerfile中可以有多个CMD指令,但只有最后一个会生效。如果一个Dockerfile中同时包含ENTRYPOINTCMD,那么CMD中的内容将作为参数传递给ENTRYPOINT

示例

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

LABEL

为镜像添加元数据。常用于包含维护者信息、版本信息等。

示例

LABEL maintainer="name@example.com"

EXPOSE

指定容器在运行时监听的端口。

示例

EXPOSE 80

ENV

设置环境变量。

示例

ENV NGINX_VERSION 1.14

ADD

复制文件、目录或远程文件URL到镜像。ADD会自动解压压缩文件。

示例

ADD https://example.com/big.tar.xz /usr/src/things/

COPY

复制新文件或目录到镜像。

示例

COPY src /src

ENTRYPOINT

配置容器启动时运行的命令,允许将容器当作执行程序,可以不使用。

示例

ENTRYPOINT ["nginx", "-g", "daemon off;"]

VOLUME

创建挂载点目录。

示例

VOLUME /myvol

USER

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

示例

USER www-data

WORKDIR

设置工作目录。

示例

WORKDIR /path/to/workdir

ARG

定义构建时的变量。

示例

ARG version=1.0

ONBUILD

设置当镜像被用作其他构建的基础时执行的命令。

示例

ONBUILD ADD . /app/src

注:本文由 GPT 生成,orrn进行编辑和整理,如有转载请注明出处。