메타데이터(Metadata)는 무엇인가?
메타데이터란?
--
메타데이터는
데이터에 대한 데이터를 의미로
특정 데이터에 관한 데이터를 말한다.
이미지가 실제로 압축된 데이터라면
메타데이터는 해당 이미지에 대한 정보를 기술하는 데이터이다.
메타데이터에는
이미지ID, 이미지명, 파일 사이즈 등의 정보가 존재한다.
여기서 Env와 Cmd라는 데이터가 중요하다.
Env란?
애플리케이션이 사용하는 환경 설정 값을 가리킨다. (소프트웨어가 실행 시 참조할 설정 정보)
Env는 키와 값 (Key, Value)로 구성되어 있다.
위의 그림을 보면
VERSION=1.23.2, PATH=/usr/... 이렇게 `=`기호를 기준으로 왼쪽(키), 오른쪽(값)으로 나누어져 있다.
Cmd란?
이미지를 컨테이너로 실행시 프로세스 실행 명령어를 지정하는 곳이다.
컨테이너를 실행할 때 자동으로 프로세스를 실행하는 명령어가 동작하게 되는데
이때 실행하는 명령어는 Cmd에 지정된 명령어가 실행된다.
윈도우에서는 프로그램을 실행할 때에는 일반적으로 아이콘을 클릭하여 실행하지만
도커를 사용하기 위한 환경인 리눅스에서는 일반적으로 명령어를 통해서 프로그램을 실행한다.
즉, 이미지로 컨테이너를 실행할 때
Cmd에 있는 명령어를 통해서 어떠한 프로그램을 실행할지 어떻게 실행할지를 메타데이터에서 결정하게 된다.
--
컨테이너가 생성(실행)할 때의 (메타데이터) 동작 과정
--
해당 이미지의 압축 파일과 이미지의 메타데이터를 가지고 격리된 공간인 컨테이너가 생성된다.
이때 컨테이너에 있는 파일 시스템과 메타데이터는 새롭게 격리되어 있는 공간이 되고
이미지가 컨테이너로 실행될 때 Cmd에 있는 "nginx -g daemon off;"라는 명령어가 실행하게 된다.
명령어를 통해 nginx 같은 프로세스가 실행되면서 Env에 있는 환경설정 값을 사용할 수 있게 된다.
메타데이터는 컨테이너를 실행할 때 새로운 값으로 덮어쓰기가 가능하다.
예시로
이미지의 Cmd가 "nginx -g daemon off;"로 기본 지정되어서 nginx 소프트웨어를 실행시킨다면
컨테이너를 실행할 때 해당 컨테이너의 Cmd 값을 다른 소프트웨어로 실행시키는 명령어로 덮어쓰기를 하여
nginx 소프트웨어가 아닌 다른 프로세스를 실행시킬 수도 있다.
이미 빌드된 이미지의 메타데이터는 변경이 불가능하다.
메타데이터를 변경하려면 새로 이미지를 빌드할 때 메타데이터의 내용을 변경하여 빌드해야 한다.
컨테이너의 메타데이터는 이미지의 메타데이터의 내용을 그대로 가지게 된다.
다만 컨테이너 실행 시점에서 일부 메타데이터의 내용은 덮어씌울 수 있다.
"Cmd" : `docker run ...` 명령어를 통해 Cmd의 내용을 다른 명령어로 변경 가능
"Env" : `docker run -e ...` 명령어를 통해 Env의 내용에 다른 환경 변수를 설정 가능
"EntryPoint" : `docker run --entrypoint` 명령어로 다른 엔트리포인트를 지정할 수 있음
--
참고 및 출처
'Docker' 카테고리의 다른 글
이미지를 컨테이너로 실행할 때 이미지의 메타데이터 Env와 Cmd 덮어씌우기 (명령어) (0) | 2024.06.12 |
---|---|
이미지 및 컨테이너의 메타데이터를 조회 (명령어) (0) | 2024.06.11 |
이미지 관리 + 컨테이너 실행 및 삭제하기 (명령어) (0) | 2024.06.08 |
이미지란? (0) | 2024.06.07 |
Docker 명령어 정리 (0) | 2024.06.07 |