| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 알고리즘
- 딥러닝
- springboot
- 네트워크보안
- Yes
- 머신러닝
- I'm Sorry
- 데이터분석
- 파이썬
- 소프트웨어공학
- 보안
- 소프트웨어
- 자료구조
- 인공지능
- 데이터과학
- 컴퓨터과학
- 컴퓨터비전
- 버전관리
- 사이버보안
- 웹개발
- 데이터구조
- 자바스크립트
- 디자인패턴
- 프로그래밍언어
- 컴퓨터공학
- 빅데이터
- 클라우드컴퓨팅
- 데이터베이스
- 네트워크
- 프로그래밍
- Today
- Total
스택큐힙리스트
도커 이미지 레이어: `/`에 있는 `ADD file:<some_hash>`는 무엇을 의미합니까? 본문
도커 허브 이미지에는 각 이미지 레이어에 대해 실행되는 명령어 목록이 있습니다. 여기에는 golang의 예시가 있습니다.
일부 응용 프로그램은 GitHub에서 자신의 Dockerfile도 제공합니다. 여기에는 golang의 예시가 있습니다.
도커 허브 이미지 레이어에 따르면 / 경로에 ADD file:4b03b5f551e3fbdf47ec609712007327828f7530cc3455c43bbcdcaf449a75a9 in /은 첫 번째 명령어입니다. 이미지 레이어에는 FROM 명령어가 포함되어 있지 않으며, ADD 정의를 충족시키지 않는 것 같습니다.
그래서 여기 질문들이 있습니다:
ADD file:<HASH> in /의 의미와 이 형식은 무엇을 의미합니까?- 해시를 사용하여 위로 추적할 수 있는 방법이 있습니까? 나는 이 해시가
FROM이미지를 나타낸다고 생각하지만, 그에 대한 API는 없는 것 같습니다. ADD file:<HASH> in /구문을 사용하여 도커 파일을 만들 수 없는 이유는 무엇인가요? 이러한 구문을 사용하여 이미지를 빌드하거나 두 형식 간에 변환하는 방법이 있을까요?
답변 1
FROM scratch
ADD rootfs.tar.xz /
CMD [bash]
FROM scratch는 완전히 빈 이미지에서 시작합니다. 이것은 도커 이미지 트리의 기본이며, docker history와 비슷한 도구들에게 정지할 것을 알려줍니다. ADD 줄은 데비안 시스템 이미지의 tar 파일을 풉니다.
docker history 또는 도커 허브의 기록 뷰를 확인하면 동일한 단계가 진행되는 것을 확인할 수 있습니다. ADD file:4b0... in /은 ADD rootfs.tar.gz /에 해당하며, 두 번째 줄은 CMD [bash]입니다. 이는 Dockerfile이나 이미지로 분리되지 않으며, ADD에서 원래 파일 이름은 저장되지 않습니다. (물론 rootfs.tar.gz의 내용 없이 이미지를 재생성할 수 없으므로 파일 이름을 알아도 별로 도움이 되지 않습니다.)
ADD file:hash in /path 구문은 표준 Dockerfile 구문이 아닙니다 (특히 in이라는 단어는 그 부분의 일부가 아닙니다). 호스트 파일이나 URL에서 해시로 변환하는 믿을만한 방법은 없는 것 같습니다. 그러나 이미지를 빌드하고 그것의 docker history를 확인하면 (파일 메타데이터에 완벽한 일치가 있다고 가정한다면) 알 수 있습니다. 원래 파일 이름이나 구문으로 돌아갈 방법은 없고, 파일 내용으로 돌아갈 방법은 결코 없습니다.
답변 2
도커 이미지 레이어: `ADD file:도커(Docker)는 컨테이너 기반 가상화 플랫폼으로, 소프트웨어 애플리케이션을 컨테이너라는 독립된 환경으로 구동할 수 있게 해줍니다. 이러한 컨테이너는 애플리케이션과 애플리케이션 실행에 필요한 모든 종속성을 포함하고 있습니다. 도커 이미지는 컨테이너를 생성하기 위한 기반 이미지로, 여러 개의 레이어로 구성됩니다. 이 중에서 `ADD file:
`ADD` 명령어는 도커 이미지 레이어에 파일이나 디렉토리를 추가하는 역할을 합니다. `file:
`in /`는 이 `ADD` 명령어를 통해 파일이나 디렉토리가 이미지 레이어의 루트 디렉토리(`/`)에 추가된다는 것을 의미합니다. 이 파일 또는 디렉토리는 도커 이미지 빌드 과정에서 컨테이너 내부의 해당 경로에 복사됩니다.
즉, `ADD file:
이와 같이 도커 이미지 레이어에서 사용되는 `ADD file: