1. 호스트 os 위에서 논리적으로 격리된 환경(파일시스템, ip, port, ...)을 가지는 프로세스를 만드는 기술.
2. 환경을 가지는 프로세스를 컨테이너 라고 함.
3. 환경에 대한 정보는 호스트 os에 파일로 관리되고 그 파일을 이미지 라고 함.
4. 환경이 정의된 이미지 파일을 이용해서 프로세스(컨테이너)를 띄움. 프로세스를 띄울 때 이미지 파일은 리드온리로 사용됨.
5. 컨테이너에서 수정한 내용을 새로운 이미지 파일로 저장할 수 있음. 컨테이너를 띄울 때 이미지 파일은 리드온리로 사용되기 때문에, 컨테이너 수정 시 원래 이미지 파일에는 영향 없음.
6. 컨테이너는 ip/port 정보도 가지고 있기에 컨테이너끼리 통신이 가능. (원리는 찾아보진 않았으나 호스트 IP를 NAT 하는건가?)
공부한건 여기까진데 일단 제가 이해한걸 정리한게 맞나 확인좀 부탁해도 될까요...
추가적으로 글 쓰면서 생각난건데, 컨테이너의 os는 호스트 os 종속적인가요? 그러니까 호스트 os가 리눅스면 컨테이너도 리눅스에서 돌아가는 것과 같나요?
같은 사무실(커널) 안에서 각자 칸막이(cgroup, namespace)치고 할 일 하는 거라고 생각하면 됨. 가상화 같은 기술 없이는 당연히 컨테이너도 같은 커널 사용하는 거
vm이랑 다른 점이 이거임
cgroup이라는게 있는줄 몰랐네요... 키워드 알려주셔서 감사합니다
그냥 직접 써보면서 이해하는게 쉬워. 특히 운영체제 쪽이 그럼.
명령어도 계속 써보고는 있지만.. 뭔가 용어 정리를 제대로 해놓지 않으면 개인적으로 찜찜하더라고요... 조언 감사합니다
1~4. 맞음 5. 내용을 수정하기 위한 Writable 레이어를 이미지 레이어 위에 가지고 있음. 어떤 내용을 변경하면 이쪽의 내용이 변경되고 저장되는것. 컨테이너에서 수정한 내용을 새로운 이미지로 저장한다? 이쪽은 잘못 이해하고 있는듯 6. 네트워크도 격리되고 가상화하므로 당연히 컨테이너끼리 통신 가능. 다만 이를 위한 기본 설정이 필요함 7. OS는 호스트에 종속적임 ㅇㅇ 다만 애초에 모든게 리눅스기 때문에 OS 종속이라고 보기보다는 아키텍처에 종속적이라고 보는게 맞음 ARM64, AMD64 이런거
답변 감사드립니다. 5번 내용은 좀 더 공부해봐야겠네요. 감사드립니다.
도커는 이론이 중요한 게 아니라 어떻게 구축을 하느냐가 핵심 아닌가
시작한지 얼마 안돼서요... 조언 감사드립니다.