Docker 연구 노트 (5)-Dockerfile 파일의 역할 및 미러를 구축하는 방법

Dockerfile이란 무엇입니까?

Dockerfile은 이미지를 빌드하는 데 사용되는 텍스트 파일입니다. 텍스트 콘텐츠에는 이미지 빌드에 대한 지침과 지침이 포함되어 있습니다.

Dockerfile을 사용하여 이미지 사용자 지정

1. 아래의 nginx 이미지를 사용자 지정하려면 (빌드 된 이미지에 /usr/share/nginx/html/index.html 파일이 있음)
Dockerfile이라는 새 파일을 만들고 파일 내용에 다음을 추가합니다.

FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html

2. FROM 및 RUN 명령어의 역할

FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
shell 格式:
RUN <命令行命令>
# <命令行命令> 等同于,在终端操作的 shell 命令。
exec 格式:
RUN ["可执行文件", "参数1", "参数2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline

참고 : Dockerfile의 지침이 실행될 때마다 Docker에 새 레이어가 생성됩니다. 의미없는 레이어가 너무 많으면 이미지가 너무 많이 확장됩니다. 예 :

FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
&& tar -xvf redis.tar.gz
如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像

이미지 빌드 시작

Dockerfile 파일의 스토리지 디렉터리에서 빌드 작업을 실행합니다.

다음 예제는 디렉터리의 Dockerfile에서 nginx : v3 (이미지 이름 : 이미지 레이블)을 빌드합니다.

참고 : 마지막 . 은 다음 섹션에서 소개 할이 실행의 컨텍스트 경로를 나타냅니다.

docker build -t nginx:v3 .

여기에 사진 설명 삽입
경로의 컨텍스트
에 하나, 마지막으로 언급 한 지시어가 . 컨텍스트 경로가 다음 경로 그것의 맥락은 무엇인가?

docker build -t nginx:v3 .

컨텍스트 경로는 docker가 이미지를 빌드하고 때로 로컬 파일 (예 : 복사)을 사용하려고 할 때를 나타냅니다. docker build 명령이이 경로를 알고 나면 경로 아래의 모든 콘텐츠를 패키징합니다.

분석 : docker의 작동 모드가 C / S이기 때문입니다. 우리의 기본 머신은 C이고 도커 엔진은 S입니다. 실제 빌드 프로세스는 도커 엔진에서 완료되므로 현재 로컬 파일을 사용할 수 없습니다. 이를 위해서는 로컬 머신의 지정된 디렉토리에있는 파일이 도커 엔진에서 사용하기 위해 함께 패키징되어야합니다.

마지막 매개 변수가 지정되지 않은 경우 기본 컨텍스트 경로는 Dockerfile의 위치입니다.

참고 : 쓸모없는 파일을 컨텍스트 경로에 넣지 마십시오. 패키지화되어 Docker 엔진으로 전송됩니다. 파일이 너무 많으면 프로세스가 느려집니다.

추천

출처blog.csdn.net/m0_45388819/article/details/109547207