의존성 충돌 문제 해결
➡️ 컨테이너에서 실행 중인 애플리케이션들은 각자 고유의 의존성을 가짐
💡 의존 관계
어떤 프로그램(A) 실행에 다른 프로그램(B)이 반드시 필요한 경우, "프로그램 A는 프로그램 B에 의존 관계를 가지고 있다" 고 말한다.
A와 B 프로그램 모두 C 프로그램에 대해 의존 관계를 가질 때, 특정 버전을 요구하는 경우가 생길 수 있다.
A와 B가 각각 필요한 버전이 다를 경우, 일반적으로 한 컴퓨터 내에 여러 버전의 동일한 애플리케이션이 설치되지 않으므로 C에 의존 관계를 갖고 있는 A와 B 중 하나는 제대로 된 실행을 보장할 수 없다.
이를 의존성이 충돌한다고 한다.
컨테이너 기술은 위와 같은 문제를 해결한다.
컨테이너 기술은 애플리케이션을 컨테이너 내에 구성하는데, 컨테이너에서 실행 중인 애플리케이션은 어떠한 의존성도 공유하지 않고 각자 고유의 의존성을 포함하고 있다.
이는 각 컨테이너가 철저하게 실행 환경이 격리되어 있기 때문에 가능한 것이다.
ㅤ
➡️ 컨테이너를 이용하면 실행 환경이 격리된다.
A와 B를 각각의 실행 환경에서 독립적으로 실행시켜 각각 필요한 C 버전을 받을 수 있게 된다.
🤔 컨테이너는 무엇을 격리할까?
ㅤ☑️ 프로세스
- 특정 컨테이너에서 작동하는 프로세스는 기본적으로 해당 컨테이너 내에만 액세스 가능
- 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향 X
ㅤ
☑️ 네트워크- 기본으로 컨테이너 하나에 하나의 IP 주소가 할당
ㅤ
☑️ 파일 시스템- 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있음
➡️ 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한 가능
✅ 컨테이너
✅ 이미지
✅ 레지스트리
✅ 레포지토리
✅ 태그
latest
태그를 붙인 이미지를 가져옴🤔
docker/whalesay:latest
는 어떻게 읽을까?
- Docker Hub라는 레지스트리에서
- docker라는 유저가 등록한 whalesay 이미지 혹은 레포지토리에서
latest
태그를 가진 이미지