일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- I'm Sorry
- 딥러닝
- 컴퓨터공학
- 2
- 클라우드컴퓨팅
- 네트워크
- 자료구조
- 알고리즘
- 데이터구조
- 데이터베이스
- 코딩
- 사이버보안
- 프로그래밍
- 데이터분석
- 인공지능
- 자바스크립트
- 네트워크보안
- 머신러닝
- 소프트웨어
- 버전관리
- 빅데이터
- Yes
- 웹개발
- 소프트웨어공학
- 컴퓨터과학
- 컴퓨터비전
- 데이터과학
- 프로그래밍언어
- 파이썬
- 보안
- 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: