본문 바로가기
AI에서 살아남기(to. Android Developer)/나도 AI 개발자 되어보기?

도커가 바꾼 개발바닥 (feat. 코딩애플)

by 개발자 인민군 2026. 1. 26.

도커와 컨테이너 이전에 살던 개발자들은 원시인과 다를 바가 없었다.

1. 어디 새로 취업하면 개발환경셋팅 맞추느라 하루종일 삽질하고

2. 업데이트 하면 항상 뭔가 망가져서 업데이트 전에 열심히 기도하고

3. 내가 코드짠걸 서버컴퓨터로 옮기기만 하면 컴퓨터가 폭발하기 때문에 고사도 지냈다.

 

하지만 도커와 컨테이너가 나오고 나서 이 짓거리가 거의 없어졌다.

그래서 개발자들이 가장 많이 쓰는 툴 1위를 매년 Docker가 차지하고 있고

코딩책을 보려고 해도 딥러닝 모델을 다운받아서 돌릴려고해도

도커명령어부터 보이는 경우가 많다.

ocker는 "리눅스 컨테이너를 기반으로 만든, OS 레벨 가상화 기술"인데 쉽게 생각하면 치킨집을 떠올려보자.

치킨집에서 부산 분점을 차릴때, 레시피만 알려주면 지점마다 서로 시설, 도구, 재료가 달라 맛이 달라질거다.

해서 서울에서 쓰던 재료랑 레시피랑 이런걸 전부 밀키트로 준비해서 그걸 부산으로 보내고 부산에서는 그냥 그걸 데우는 식으로만 운영하면 맛이 같다.

개발도 똑같다.

팀원끼리 협업할 때 혹은 AWS에 있는 서버 컴퓨터에다가 내 코드를 배포할 때

같은 코드를 각각 다른 컴퓨터에서 실행해야 하는 경우들이 생긴다.

하지만 내 컴퓨터에서 코드 잘돌아간다고 그걸 다른 컴퓨터에 대충 보내서 실행하면 의도대로 동작하지 않는 경우가 많다.

컴퓨터마다 OS도 다르고 설치된 기본프로그램들 버전도 다르기 때문이다.

그래서 내가 쓰던 OS랑 프로그램이랑 그런걸 컴퓨터마다 전부 똑같이 준비하면 된다.

그 다음에 코드를 그 위에서 실행하면 걱정할 필요가 없는데 이러기 위해서 옛날엔 VM이란걸 썼다.

어떤 OS위에 다른 OS를 설치하는 건데 굉장히 무겁고 성능도 좋지 않기 때문에 

요즘은 그거 대신 훨씬 가벼운 Docker와 컨테이너를 쓴다.

 

그래서 Docker는

Docker를 쓰면 코드 밀키트같은걸 만들 수 있다.

거기다가 OS, 필요한 프로그램, 코드 이런걸 전부 담을 수 있고 Docker를 쓰면 그 밀키트를 버튼 딸깍으로 쉽게 실행해줄 수도 있다.

 

그래서 Docker는 쉽게 말하면

1. 코드 밀키트를 만들고

2. 코드 밀키트를 실행해주는 간단한 프로그램이다.

근데 VM 이런 것 보다 매우 가볍게 동작한다.

사용방법을 간단하게 말하면

1. Dockerfile 이라는 파일을 하나 만들고

2. 무슨 OS를 설치할 것인지

3. 어떤 프로그램이랑 라이브러리랑 SDK를 설치할건지

4. 어떤 코드를 어떻게 실행할건지

5. docker build 어쩌구 명령어를 입력하면 밀키트로 포장이 되고

6. docker run 어쩌구 명령어를 입력하면 밀키트를 실행할 수 있다.

7. 밀키트를 실행하면 컨테이너라고 부르는 가상 컴퓨터가 하나 만들어지고

8. 그 안에서 여러분들이 설정해둔 OS와 작업환경에서 코드가 실행이 된다.

이게 Docker 사용법 끝이다.

 

 

 

Docker 덕분에 개발과정이 편해지다보니까

개발자들이 프로그램을 가지고 이상한 짓을 하기 시작했다.

1. 밀키트 덕분에 배포가 쉬워지니까 요즘은 어떻게 서버를 개발하냐면 이전엔 서버기능을 하나의 프로그램 안에 다 쑤셔넣었는데 지금은 잘게 쪼개서 여러 프로그램으로 나누고 그걸 따로따로 배포해서 운영한다.

2. 그러면 여러명이서 분업하기도 좋고 기능 업데이트도 빨라진다는 장점이 있다. 이걸 마이크로서비스 아키텍쳐라고 하는데 요즘 백엔드 밥줄이 되었다.

 

 

2. 프로그램을 빌드하고 테스트하고 배포하는 작업이 도커 덕분에 초딩도 할 수 있을 정도로 쉬워졌기 때문에 원클릭 딸깍 자동 배포같은걸 도입하기 시작하는 곳들이 많아졌다.

Docker의 실체

Docker라는 프로그램의 실체는 별거 아닙니다.

리눅스 자체에 원래 가벼운 가상화기술같은게 있었다.

 

가상 파일시스템을 만들어주는 union filesystem, namespace 원하는 곳에 컴퓨터 자원을 할당해주는 cgroups 라는 기능을 쓰면

리눅스 컴퓨터 안에 가상 컴퓨터를 만들 수 있습니다.

그걸 쓸 수 있게 도와주는 프로그램도 누가 만들어놓은게 있다. (runc, containerd)

근데 그것들을 7살도 쓸 수 있게 짜깁기해서 만들어놓은게 Docker라는 프로그램일 뿐이다.

거기에 빌드, push, 모니터링 등 편의기능도 추가했을 뿐이다.

그래서 Docker대신 쓸 수 있는 프로그램도 있고 (podman, cri-o)

Docker 없이 직접 컨테이너(가상 컴퓨터)를 띄우는 것도 가능합니다.

단점

장점이 있으면 단점이 있기 마련인데

1. 컨테이너 침입과 같은 새로운 보안이슈를 챙겨야함

2. 컨테이너를 많이 사용하면 관리에 필요한 시간과 비용이 증가함 

3. 안정적인 DB같은거 돌려야할 땐 컨테이너로 만드는게 딱히 이점이 없음

4. 요즘은 가벼운 VM도 많이 나와서 컨테이너간 완전한 격리를 원하면 VM이 나을 수 있음

이런게 있다.