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中同时包含ENTRYPOINT和CMD,那么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进行编辑和整理,如有转载请注明出处。