본문 바로가기
study/til

240728

by 22promenade 2024. 7. 28.

docker 개념을 배웠다.

docker를 공부한다 다짐만하고 미뤄두었는데 이제는 미룰 수 없는 상황이 왔다. 독스와 유튜브에서 개념을 공부했는데 아래와 같이 정리될 수 있을 것 같다.

 

docker는 왜 탄생했나?

애플리케이션을 실행시키려면 웹서버, 데이터베이스 같은 여러가지 요소들이 필요하다. 이러한 요소를 설치하고 실행시키는데 있어서 설치 환경을 동일하게 맞추지 않는다면 '내 컴퓨터에서는 되는데 여기서는 안 되네' 같은 문제가 생길 수 있다. 이에 개발자는 비즈니스 개발에 집중하는데 시간을 소비하기보다는 인프라적 요소를 구성하는데 시간을 소모한다. 가상머신 개념을 이용하면 이 문제를 어느정도 해소할 수 있는데 운영체제 위에 운영체제를 띄워 환경을 동일하게 맞춘 뒤 새로 띄운 운영체제에 애플리케이션을 올려서 이 문제를 해결하는 것이다. 문제는 운영체제 위에 운영체제를 띄운다는 것인데 리소스 측면에서 느리고 운영체제를 매 번 설치하는 것이 귀찮다는 것이다. 느리고 귀찮으면 기술이 생겨난다. 리눅스는 컨테이너 기술을 지원한다. 컨테이너 기술은 운영체제 위에 운영체제를 띄우는 것이 아닌 필요없이 단순하게 실행에 필요한 프로그램과 실행 파일 , 라이브러리를 모아둔 프로세스를 독립적으로 실행시키는 것이다. 컨테이너 기술을 활용한 프로그램 중 대표적인 프로그램이 도커이다.

 

내 느낌

도커 기술은 JVM 이 하고자하는 것과 유사하다는 느낌을 받았다. 두 기술 모두 본래 목적이 운영체제 위에 가상 머신을 두어 원래의 운영체제를 모르게 만듬으로써 한 번 설치만한다면 어느 운영체제이던 원하는 프로그램을 실행시킬 수 있다가 아닌가? 이와 함께, 컨테이너는 프로세스, 이미지는 프로그램에 비유해서 생각하니 하고자하는 바가 어느정도는 이해되었다.

 

기본 docker command

  • docker pull
  • docker images
  • docker run
  • docker ps
  • docker stop
  • docker logs
  • docker rm
  • docker rmi
  • docker exec