-
Docker (2) - 이미지와 컨테이너Infra/Docker 2024. 1. 24. 21:10
1. 이미지
- 일반적으로 프로그램을 실행시키기 위해선 위와 같은 환경이 조성되어야 한다.
- 이미지는 특정 시점의 어플리케이션을 구동할 수 있는 환경을 압축하여 저장해 둔 것이다.
- 도커를 사용한다는 것은 컨테이너 안에서 특정 소프트웨어를 운영한다는 것이다.
- 컨테이너는 이미지를 통해 실행 될 수 있다.
- 이미지 자체는 압축파일로 용량만 차지하고, 이를 컨테이너를 통해서 실행하면 cpu,메모리등의 리소스를 사용하기 시작한다.
- 비유하자면, 이미지는 게임의 실행 파일이고, 실행 파일을 눌렀을 때 시작되는 프로세스를 컨테이너로 볼 수 있다.
- 하나의 이미지에 여러 컨테이너를 실행시킬 수 있다. 컨테이너 실행시 이미지를 복사해 격리된 디스크 공간을 생성한다.
* 사용하는 입장에서 컨테이너는 그냥 하나의 프로세스일 뿐이다! 뭔가 잘못 되었을 때 삭제하고, 다시 실행시키는 것에 겁먹을 필요가 없다. 그냥 크롬을 키고 끄고, 카카오톡을 키고 끈 것과 같은 것이다.
2. 메타 데이터
- 메타 데이터는 데이터에 대한 데이터를 의미 쉽게, 특정 파일에 담긴 데이터가 뭔지 설명해주는 파일이라고 생각하자
- 컨테이너는 이미지의 메타데이터를 받고, 컨테이너 실행시 이를 복사해서 사용한다.
- 몇몇 메타 데이터는 컨테이너의 설정으로 덮어쓰기가 가능하다.
덮어 쓰기 가능한 메타데이터, 컨테이너 실행시 옵션을 통해 덮어쓰기 가능 )
-env: 애플리케이션이 사용하는 환경 설정 값을 의미한다. (어플리케이션 실행시 참조할 설정 정보)
-cmd: 이미지를 통해 컨테이너를 실행할 때(프로세스가 시작되자 마자) 실행할 명령어를 지정한다.
*ex) java 애플리케이션에서 jdbc연결 정보 -> ENV
특정 컴퓨터에서 컴파일 된 jar파일을 구동하는 명령어 (java -jar 파일이름) -> cmd
참고자료:
'Infra > Docker' 카테고리의 다른 글
Docker (6) - 도커 볼륨 (0) 2024.01.25 Docker (5) - 도커 네트워크 (0) 2024.01.25 Docker (3) - 이미지 빌드 (0) 2024.01.24 Docker(4) - 레지스트리 (0) 2024.01.24 Docker (1) - 가상화 기술 (0) 2024.01.24