hyuko

Docker 실행과 컨테이너란? 본문

Docker/2023.07.05

Docker 실행과 컨테이너란?

hyuko12 2023. 7. 5. 13:33
728x90
반응형

Docker 설치를 끝내고 항상 프로그래밍의 첫번째는 Hello Wolrd를 찍어보는 것이다.

저는 맥OS를 이용해서 학습 하였기 때문에 iterm을 이용해서 시작했습니다.

본문에서 쓰이는 컨테이너 정보는 도커교과서 책의 저자분이 올려놓으신 github에서 클론하여 사용했습니다.

docker container run diamol/ch02-hello-diamol

# 위의 명령어를 치게 되면 해당 화면이 출력됩니다.

해당 부분에서 docker container run 이라는 명령어는 컨테이너로 어플리케이션을 실행하라는 도커 명령어입니다.
그리고 그뒤에오는 diamol/ch02-hello-diamol이라는 것은 패키지(도커 이미지)를 뜻하고 해당 패키지를 실행하라는 것입니다.

local 에 해당 패키지가 없기 때문에 우선 pull 을 해서 다운을 받아줍니다.

그리고 해당 이미지를 실행시켜 그 아래의 Hello from Chapter 2! 라는 컨테이너가 실행하게 됩니다.

만약! 다시 이 이미지를 실행하게 되면 어떻게 나오게 될까요?

아까와 결과는 비슷하지만 조금 다르게 출력이 되는데 그 이유로는 우리가 첫번째 실행을 했을 때
이미지를 pull 해서 다운받아 놓았기 때문입니다.

그런데 여기서 이상한 것은 첫번째 부분인 My name is 다음에 오는 숫자 와 영문자의 조합글은
컴퓨터의 이름인데 아이피와 컴퓨터 이름은 재실행 할 때마다 변경이 될 확률이 높은데
왜 그런걸까? 분명 같은 컴퓨터에서 실행을 하는 것인데?! 이 점은 아래부분에서 다루도록 하겠습니다.


컨테이너란?

말 뜻으로 보면 컨테이너 즉 무엇을 담는 것 입니다.
그 의미와 같은 의미이고 말 그대로 어플리케이션을 담고 있는 일련의 상자로 볼 수 있다.

아래의 그림은 간단히 해당 컨테이너를 표현해 준 것입니다.

도커 컨테이너

컨테이너는 가상의 어떠한 어플리케이션을 담을 수 있는 공간이고 해당 공간은 같은 OS 환경에서 같은 활동을 할 수 있게 

만들어 지며 , 하지만 각각의 컨테이너들은 각기 다른 호스트명, IP주소, 디스크 드라이브를 가지고 있습니다.

 

해당 컨테이너의 값들은 도커가 만들어내는 가상 리소스 이며, 이렇게 동작을 할 경우

컨테이너들은 독립적인 환경을 갖고 있지만, 그 컨테이너가 실행이 되는 OS와 컴퓨터 CPU, 메모리 등은 같은 환경을 공유 한다.

이러한 것을 격리와 밀집이라고 하는 모순적인 조건을 동시에 만족할 수 있는 상황이 됩니다.

 

격리와 밀집의 모순적인 조건을 동시에 만족하기 위해 가장 처음 시도했던 것에는
가상머신을 쓰는 방법이 있었습니다 아래와 같은 구조입니다.

 

가상머신

얼핏 보면 비슷해 보이지만, 다른 점으로는 운영체제 마저 가상머신 마다 하나씩 따로 들고가야 한다는 점이 다릅니다.

호스트 컴퓨터와의 OS환경 공유가 일어나지 않습니다. 여기서 왜 문제인가 하면 가상머신에 있는 운영체제 또한 

호스트 컴퓨터의 CPU와 메모리 자원을 상당량 차지하기 때문에 쓰기 힘들고 결국 격리는 가능하지만 밀집은 불가한 구조가 됩니다.


해당 과정을 통해서 알 수 있던 것!

도커라는 아이는 세가지 작업으로 나누어진다.
첫째. 도커 컨테이너를 실행하기 전 우리는 이미 공유되어있는 도커 이미지를 가지고 와서 실행했다.
이 의미는 하나의 어플리케이션을 컨테이너에서 실행할 수 있게 이미지화 하는 것을 빌드라고 한다.

둘째. 다른 사람들도 쓸 수 있게 공유하는 과정을 선수로 거쳐야 한다. 이러한 하나의 행위를 공유라고 볼 수 있다.

셋째. 공유 되어진 컨테이너 이미지를 실행 하는 것으로 마무리된다.


728x90
반응형

'Docker > 2023.07.05' 카테고리의 다른 글

Docker 설치 및 간단한 환경설정 예약어등  (0) 2023.07.05