본문 바로가기

Linux/Docker

[Docker] Docker 시작하기. Docker란? Docker와 Container의 개념에 대하여

● Docker란 무엇인가

가장 짧게 요약을 하자면

가상의 환경에서 미리 정해져있는 필요한 프로그램들의 리스트를 통째로 설치하고 실행한 뒤 가상의 환경을 종료시킴으로써 내 컴퓨터는 깔끔하게 아무 영향을 받지 않도록 해주는 녀석입니다.


Docker에서는 크게 세 가지 개념이 필요해요.


Image, Docker engine, Container


image 는 가상환경에 대한 설정과 설치해야할 Dependencies( 어떤 패키지의 dependency라는 건, 그 패키지를 실행하기 위해 필요한 패키지 목록을 말합니다. ), 수행할 작업등을 적어놓은 설정이고 docker build라는 명령어를 통해 생성할 수 있어요.

docker engine는 image를 통해 container라는 실행 객체를 생성하고 실행해요.

container철저하게 가상환경에서 docker engine을 통해 실행되기 때문에 내 컴퓨터의 설정과는 무관하게, 어떤 컴퓨터에서든 동일하게 프로그램을 실행할 수 있게 해주고, 내 컴퓨터의 데이터에는 아무런 영향을 끼치지 못해요.


docker build 를 통해 Image를 빌드하고

docker run을 통해 Image를 run 하고 container가 실행됩니다.



● Image VS Container

 

What is the difference between images and containers in Docker ?

- Docker에서 image와 container의 차이점은 무엇?

https://stackoverflow.com/questions/23735149/what-is-the-difference-between-a-docker-image-and-a-container
stackoverflow에 좋은 질문답변글이 올라와 첨부합니다. 


위 링크의 내용을 요약하자면 imageclass 같은 느낌이고 container는 class를 바탕으로 생성된 object같은 느낌이랍니다.

즉 같은 image라도 각 container 별로 사용자가 프로그램을 진행시키는 방향에 따라 프로그램의 결과가 달라질 수 있다는 말이겠지요.

또한 image는 설정과 수행할 작업에 대한 정보들이라고 할 수 있겠고

container은 그 설정을 바탕으로 작업을 하고 있는 작업 영역이라고 볼 수 있겠네요.

 

● Docker를 통해 어떤 작업을 하려는 걸까?


그럼 Docker을 통해 어떤 작업을 할 수 있을까요.

Docker는 수행하고자 하는 작업 혹은 프로그램에 필요한 패키지의 dependencies(패키지를 실행하기 위해 필요한 패키지들)을 모두 담아 이미지를 만듭니다. 그리고 그 image를 run하면 내 컴퓨터에 필요한 dependencies가 없더라도! 마치 있는 것처럼 프로그램이 동작하게 됩니다.!

docker engine을 이용해 image에 입력된 설정과 작업들을 바탕으로 container가 실행되게 되는 것이죠,


그럼 Docker을 통한 가상 환경에서의 작업을 한 번 해볼게요.

다음 글에서... ㅎㅎ