一、常用的 Dockerfile 命令
Dockerfile 是一个文本文件,其中包含了一系列用于构建 Docker 镜像的指令。每个指令都会在镜像上执行特定的操作。下面列出了 Dockerfile 中常用的命令及其用途:
基础命令
FROM
指定基础镜像。所有后续的指令都是在此基础上执行的。
例如:FROM ubuntu:latest
LABEL
用于为镜像添加元数据标签。
例如:LABEL maintainer="yourname@example.com"
RUN
运行任意的 shell 命令。
例如:RUN apt-get update && apt-get install -y nginx
COPY
将本地文件/目录复制到目标容器中。
例如:COPY ./app /app
ADD
类似于 COPY,但是支持从 URL 下载文件并将其添加到构建上下文。
例如:ADD https://example.com/file.tar.gz /
WORKDIR
设置接下来的命令的工作目录。
例如:WORKDIR /app
CMD
设置容器启动时要执行的默认命令。可以被 docker run 命令行参数覆盖。
例如:CMD ["nginx", "-g", "daemon off;"]
ENTRYPOINT
设置容器启动时要执行的不可变的默认命令。与 CMD 一起使用时,CMD 参数会被作为 ENTRYPOINT 的参数传递。
例如:ENTRYPOINT ["python", "app.py"]
EXPOSE
声明容器将监听的端口。
例如:EXPOSE 80
ENV
设置环境变量。
例如:ENV PATH /usr/local/bin:/bin
其他有用命令
ARG
定义构建参数,可以在构建镜像时传递值。
例如:ARG version=1.0
ONBUILD
当使用此镜像作为另一个镜像的基础镜像时触发某些指令。
例如:ONBUILD ADD . /app/src
USER
设置用于执行后续指令的用户。
例如:USER app
VOLUME
创建一个挂载点,用于持久化数据。
例如:VOLUME /data
STOPSIGNAL
设置容器停止时使用的信号。
例如:STOPSIGNAL SIGTERM
HEALTHCHECK
定义健康检查命令,用于确定容器是否处于健康状态。
例如:HEALTHCHECK CMD curl -f http://localhost/ || exit 1
SHELL
指定用于 RUN、CMD、ENTRYPOINT 指令的默认 Shell 形式。
例如:SHELL ["/bin/bash", "-c"]
二、已有镜像+dockerfile
nginx 举例子
1、准备
cd /Users/wujie/Documents/dockerfiles
➜ dockerfiles mkdir docker-demo
➜ dockerfiles cd docker-demo
➜ docker-demo vim Dockerfile
2、添加内容
FROM nginx
RUN echo '<h1>This is bestcxx Nginx </h1>' >/usr/share/nginx/html/index.html
3、运行
末尾的点 表示 Dockerfile 文件的相对路径
➜ docker-demo docker build -t nginx:bestcxx .
4、查看
➜ docker-demo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx bestcxx f8bdd8444bf8 8 hours ago 187MB
5、运行
docker run -d -p 92:80 nginx:bestcxx
6、访问
http://localhost:92/