도커!?
왜 iOS개발자의 블로그 두번째 글부터 제목이 도커냐고 한다면,,
조금 부끄럽지만 최근까지 도커에 대해 잘 몰랐다.
그러다가 문득 몰라도 될까? 라는 생각이 들었고 바로 제일 가까운 백엔드 개발자에게 하루만에 도커에 대해 알고 있는 모든 지식을 전수해달라고 했다.
사실 하루가지고는 좀 부족했지만 대애애충 이런 느낌이겠구나 정도는 알게 되었다.
간단히 말하면 ‘컨테이너 기술’을 쉽게 사용할 수 있게 만드는 플랫폼이다.
여기서 말하는 컨테이너란, 코드 + 의존성 + 환경 설정 파일들을 모두 포함해서 격리시킨 후 패키징해서 어디서 실행해도 동일한 결과를 보장한다.
왜 도커가 필요하냐? 를 이해하기 위해서 간단한 크롤러를 만들었다.
목표는 간단했다.
내 컴퓨터에서 만든 크롤러를 다른 사람 컴퓨터에서도 문제 없이 실행할 수 있게 만드는 것.
그리고 동시에 돌릴 크롤러 개수를 미리 선택하고 이 크롤러들이 1~1000까지의 랜덤 숫자를 가지고 /api/{number} get api에서 해당 숫자에 대한 랜덤 텍스트를 긁어오는 것이 필요했다.
FastAPI로 간단하게 구현하였고 fastapi, uvicorn, aiohttp 등의 의존성을 추가하였다.
자 이제 이걸 다른 사람 컴퓨터에서 실행할 수 있게 만들어보자.
물론, github에 올려서 clone, pull 받아서 할 수도 있다.
하지만 만약 uvicorn, aiohttp 등의 의존성이 깔려있지 않다고 한다면?
pip install uvicorn, pip install aiohttp, 등등등 이걸 언제 치고 앉아있는가.
이럴때 바로 도커를 사용하면 된다.
우선 도커파일을 만들어보자
FROM python:3.13 // python 3.13 기반 이미지 사용
RUN pip install uvicorn
RUN pip install aiohttp
RUN pip install fastapi
COPY main.py main.py // 내 main.py 파일을 컨테이너 안으로 복사
CMD ["python", "main.py"] // python main.py 명령어로 실행
그러고 docker build . -t first:3(이건 본인이 알아서) 로 도커파일을 빌드한다.
docker images로 방금 빌드 후 생성한 이미지를 확인할 수 있다.
요 이미지를 가지고 다른 사람 컴퓨터에서 실행할 수 있는데..원래는 Registry에 올려야 하지만 너무 귀찮기 때문에 tar 파일로 압축해서 에어드랍으로 보냈다.
컨테이너를 실행하기 위해서 docker run -p 8000:8000 first:3 을 터미널에 입력했고 결과는!?
(-> first:3 이라는 이미지로 컨테이너를 만들고, 포트 8000에 바인딩해서 실행하라는 의미)
수동으로 의존성 설치할 필요도 없이 정말 간편히 내가 만든 프로그램을 실행시킬 수 있었다
도커 이미지 패키징, 내부 동작 방식 등 궁금한 것이 더 많았지만 도커의 개념 자체가 어려워서 여기까지만 해도 머리가 아팠다. 좀 더 알아본 후에 2편을 써야지