개발자

도커 공부 중 궁금한 것

2024년 04월 21일조회 145

docker 공부 중인 초보 개발자입니다! docker 컨테이너를 실행한다는 것 자체가 host os 위에서 새로운 리눅스 운영체제를 실행한다는 뜻 아닌가요? 예를 들어, nginx 이미지를 다운 받아 컨테이너 실행 시 nginx는 리눅스 환경 위에서 작동되는 것 아닌가요? 근데 왜 굳이 리눅스 관련 이미지를 다운 받아 컨테이너를 실행시키는지 궁금합니다.... 도대체, 리눅스 관련 이미지를 다운받아 컨테이너를 실행하는 것과 그렇지 않은 상태에서 컨테이너를 실행하는 것.. 도대체 무슨 차이인가요..ㅠㅜ

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

백승훈님의 프로필 사진

안녕하세요 답변 드립니다 😏 https://dzone.com/storage/temp/14462155-docker-apps.png 리눅스 관련 이미지가 뭔지는 잘 모르겠으나 리눅스는 모든 컨테이너에 이미 기반으로 설치되어 있습니다. nginx는 리눅스가 아닙니다 nginx입니다. 운영체제와 실행 프로그램 이라고 이해하시면 됩니다. 각 컨테이너는 독립된 환경이며 리눅스 기반의 os가 설치되어 있습니다. 컨테이너 내부에 필요한 패키지나 이미지를 설치하여 독립된 환경의 컨테이너를 구성합니다.

이정민님의 프로필 사진

이정민

작성자

구직활동중2024년 04월 25일

헉 제가 개념이 부족해 질문 자체가 좀 이상했나봅니다 ㅎㅎ; 아랫분 댓글이 제가 궁금했던 내용입니당 ㅎㅎ 답글 달아주셔서 감사합니다!

박범수님의 프로필 사진

'리눅스 관련 이미지'가 혹시 베이스 이미지로 ubuntu, centos 등을 사용하는 것을 말씀하시는건가요? 그걸 말씀하시는게 맞다면 아무것도 없는 scratch 이미지를 쓰는 것에 비해 장점은 분명히 있습니다. 리눅스의 커널 부분만을 남겨둘 경우 생각보다 이미지 구성이 까다롭습니다. 대표적으로 apt, yum 같은 패키지 매니저가 없어서 의존성을 설치하기가 까다롭습니다. 또 어플리케이션이 특정한 리눅스 배포판에서만 테스트 되었을 경우 다른 이미지를 쓰는 것이 부담스러울 수 있습니다. 그래서 베이스 이미지로 ubuntu, centos 같은 이미지를 많이 쓰는 것입니다. 이런 배포판은 기능이 많은 만큼 이미지의 용량도 큽니다. 이미지를 가볍게 만들고 싶을 경우 alpine이나 busybox, scratch 등의 경량 이미지를 사용합니다. 빌드에 필요한 의존성 설치는 패키지 매니저를 통해 편리하게 하고, 최종 이미지에는 실행에 꼭 필요한 파일만 남기는 방법도 있습니다. multi stage build를 검색해보세요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 04월 21일

Docker는 코딩, 빌드, 테스트, 배포 등의 과정을 매우 간결하고 편리하게 만들어줍니다. Docker 컨테이너를 실행한다는 것은 실제로는 host OS(호스트 운영체제) 위에서 자체적인 파일 시스템을 가진 별도의 프로세스를 실행하는 것과 같습니다. 이렇게 실행된 컨테이너는 호스트 OS와 격리된 공간에서 작동하며, 그 밖에 모든 의존성을 갖춘 상호 독립적인 환경을 제공합니다. 리눅스 관련 이미지를 다운 받아 컨테이너를 실행하는 이유는 다음과 같습니다: - **격리**: 각각의 Docker 컨테이너는 완전히 독립적으로 작동합니다. 말하자면, 하나의 애플리케이션에서 문제가 생겼다고 해도 그 외 다른 애플리케이션은 영향을 받지 않습니다. - **환경 일관성**: 개발자 A가 Python 2를 사용하고 개발자 B가 Python 3를 사용한다면 문제가 발생할 수 있습니다. 이런 경우 Docker 이미지 안에 필요한 모든 종속성과 버전 정보를 포함시켜서 둘 사이의 차이를 없앨 수 있습니다. - **이식성**: Docker는 어느 환경에서든 동일하게 작동합니다. 이것은 로컬에서 개발한 것을 운영 서버로 무리 없이 이동할 수 있다는 것을 의미합니다. 즉, 리눅스 관련 이미지를 다운받아 컨테이너를 실행하는 것과 그렇지 않은 상태에서 컨테이너를 실행하는 것의 주요 차이는, 원하는 환경을 완벽하게 재현하고 공유하여 일관적인 작동을 보장하고 싶다면 도커 이미지가 필요하다는 것입니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!