【docker】 Dockerfile에서 이미지를 빌드하기 위한 일반적인 명령:


1. 일반적으로 사용되는 명령:

Dockerfile은 명령을 하나씩 담고 있는 텍스트 파일로, 지정된 이미지를 기반으로 하나의 명령이 레이어를 빌드하고 최종적으로 새로운 이미지를 빌드합니다.

키워드 효과 주목 체재
에서 기본 이미지 지정 빌드를 시작할 미러 지정 FROM <image>:<tag>
정비사 작가 정보 이 dockerfile을 작성한 사람을 나타냅니다(더 이상 사용되지 않음). MAINTAINER xxx xxx
상표 상표 유사한 댓글을 이해할 수 있는 키-값 쌍의 형태로 이미지에 메타데이터를 추가합니다. LABEL <key>=<value> <key>=<value> <key>=<value>
달리다 이미지를 만들 때 실행되는 명령 이미지를 빌드할 때 실행할 명령, 기본값은 /bin/sh입니다. RUN <命令行命令>或RUN["可执行文件", "参数1", "参数2"...,"参数n"](相当于:RUN 可执行文件 参数1 参数2 … 参数n)
CMD 컨테이너가 시작될 때 실행할 명령 컨테이너를 실행할 때 실행할 셸 환경입니다. 각 Dockerfile은 하나의 CMD 명령만 가질 수 있습니다. 여러 명령이 지정된 경우 마지막 명령만 실행됩니다. 3가지 형식이 있습니다.【1】exec执行:CMD ["executable","param1","param2"];【2】/bin/sh中执行:CMD command param1 param2;【3】提供给 ENTRYPOINT 的默认参数:CMD ["param1","param2"]
진입 지점 입구 일반적으로 실행 및 폐쇄되는 일부 컨테이너 생산에 사용됩니다. ENTRYPOINT ["executable", "param1", "param2"]
복사 미러에 파일 복사 빌드 시 미러에 파일 복사 COPY 源路径 目标路径(소스 경로는 호스트 시스템의 경로이고 대상 경로는 컨테이너의 경로입니다.)
추가하다 파일 추가 빌드할 때 이미지에 파일을 추가합니다. COPY와 다른 점은 ADD가 자동으로 압축을 푼다는 것입니다. ADD 源路径 目标路径(소스 경로는 호스트 시스템의 경로이고 대상 경로는 컨테이너의 경로입니다.)
ENV 환경 변수 이미지를 빌드할 때 컨테이너 시작 시 -e로 덮어쓸 수 있는 환경 변수를 설정합니다(즉, 컨테이너에서도 사용할 수 있음). ENV <key> <value>
아르그 빌드 매개변수 빌드 런타임에 전달되는 변수를 지정하는 데 사용됩니다(dockerfile에 매개변수 전달). 이는 미러 이미지를 빌드할 때 매개변수를 외부에서 내부로 전달하는 것과 동일합니다. ARG <name>[=<default value>]
용량 외부에 마운트할 수 있는 익명 데이터 볼륨 정의 컨테이너를 시작할 때 데이터 볼륨을 마운트하는 것을 잊은 경우 익명 볼륨에 자동으로 마운트됩니다. VOLUME ["/xxx/xx/xxxx", "xxx", ..., "xxx"]
폭로하다 컨테이너의 서비스 포트 선언 컨테이너의 서비스 포트(및 서비스를 제공하는 포트)만 선언합니다. EXPOSE 端口号
WORKDIR 작업 목록 컨테이너의 시작 작업 디렉터리를 지정합니다(존재하지 않는 경우 자동으로 생성됨). 설정 후 Dockerfile의 RUN, CMD, ENTRYPOINT, ADD 및 COPY와 같은 후속 명령은 이 디렉터리에서 WORKDIR을 실행합니다. 最好是绝对路径
사용자 컨테이너 실행 사용자를 지정합니다. 컨테이너 실행 시 사용자 이름 또는 ID 실행 사용자 지정 USER user

2. 주의가 필요한 사항:

  1. Dockerfile은 기본적으로 지침을 통해 이미지를 빌드하는 프로세스를 설명하는 파일입니다.
  2. Dockerfile的注释符号是#。
  3. Dockerfile的第一行必须是FROM,从一个基础镜像来构建。
  4. 通过Dockerfile构建镜像命令格式为:docker build -f Dockerfile文件路径 -t 镜像名称:版本 .
  1. 默认一般把文件命名为Dockerfile,然后构建命令直接用docker build -t 要保存的镜像名称:版本 .
  2. 最后的.的含义是将当前目录告诉docker引擎,然后当执行docker build命令后,本机将当前目录下的所有文件发送给docker引擎,最后由docker引擎完成镜像的构建

三、add和copy的区别:

Dockerfile 中的 ADD 与 COPY 指令都可以用于将本地文件或目录复制到 Docker 镜像中,但它们之间有一些区别。

【1】ADD 指令支持自动解压缩功能

当使用 ADD 指令将本地文件复制到 Docker 镜像中时,如果该文件是压缩包格式,Docker 会自动解压缩该文件。例如:

ADD nginx-1.21.0.tar.gz /usr/local/

上述例子中在将本地的 nginx-1.21.0.tar.gz 文件复制到 Docker 镜像的 /usr/local/ 目录下时,Docker 会将该文件解压缩。
而 COPY 指令并不支持自动解压缩功能,需要手动解压缩后再复制进镜像。

【2】ADD 指令可以从 URL 复制内容

ADD 指令除了能够复制本地文件和目录外,还可以复制远程文件(例如从 URL 下载)到 Docker 镜像中。例如:

ADD https://example.com/nginx-1.21.0.tar.gz /usr/local/

上述例子中会从远程 URL https://example.com/nginx-1.21.0.tar.gz 下载文件,并将其复制到 Docker 镜像的 /usr/local/ 目录下。
而 COPY 指令只能复制本地文件和目录。

【3】 ADD 指令具有隐式的文件拷贝功能

ADD 指令除了能够复制本地文件和目录外,还具有一个隐式的文件拷贝功能:当复制一个压缩包文件到容器中时,Docker 会自动解压,并且可以直接从 URL 下载文件并解压缩。例如:

ADD package.tar.gz /app/

上述例子中,如果 package.tar.gz 是一个压缩包文件,则 Docker 会自动解压缩该文件,并将其复制到 /app/ 目录下。而 COPY 指令无法实现这一功能。

추천

출처blog.csdn.net/weixin_53791978/article/details/132171466