컨테이너를 처음 쓸 때 가장 자주 하는 오해가 있습니다. “컨테이너 안에 파일이 있으니까 당연히 남아 있겠지?” 그런데 컨테이너는 기본적으로 교체 가능한 실행 단위입니다. 컨테이너를 지우고 새로 만들면 내부 변경사항이 같이 사라질 수 있습니다. 그래서 실무에서는 코드, 로그, 데이터베이스 파일처럼 성격이 다른 데이터를…
[도커 30강] 09강. requirements.txt 기반 Python 이미지 빌드
파이썬 애플리케이션을 도커로 배포할 때 가장 많이 나오는 질문이 있습니다. “왜 어떤 이미지는 금방 빌드되고, 어떤 이미지는 매번 오래 걸릴까?” 원인의 상당수는 requirements.txt를 Dockerfile에서 다루는 순서와 방식에 있습니다. 오늘은 requirements 파일 기반으로 Python 이미지를 안정…
[도커 30강] 08강. WORKDIR, ENV, ARG를 안전하게 쓰는 패턴
도커 파일을 조금만 다뤄보면 WORKDIR, ENV, ARG는 거의 매번 등장합니다. 문제는 세 명령이 비슷해 보여서, 아무 생각 없이 섞어 쓰기 쉽다는 점입니다. 이렇게 섞이면 빌드 캐시가 불필요하게 깨지고, 런타임 설정이 의도와 다르게 고정되거나, 심하면 민감값이 이미지 히스토리에 남는 사고까지 이어집니다. 오늘은…
[도커 30강] 07강. 레이어 캐시와 빌드 속도 최적화
도커를 쓰다 보면 초반에는 빌드가 금방 끝나서 체감이 잘 안 오지만, 프로젝트가 조금만 커져도 docker build 대기 시간이 팀 전체 생산성을 크게 깎아먹는 구간이 반드시 옵니다. 특히 CI에서 매 커밋마다 이미지를 다시 만드는 팀이라면, 빌드가 2분에서 8분으로 늘어나는 순간부터 리뷰-수정-검증 사이클 자체가 느…
[도커 30강] 06강. Dockerfile 기초: FROM, RUN, COPY, CMD
도커를 어느 정도 써본 뒤 가장 먼저 부딪히는 벽이 있습니다. docker run으로 임시 테스트는 잘 되는데, 팀에 공유하거나 CI에서 자동 빌드를 하려면 결국 “내가 어떤 환경을 만들었는지”를 문서가 아니라 코드로 남겨야 한다는 점입니다. 그 역할을 하는 것이 Dockerfile입니다.
[도커 30강] 05강. 컨테이너 로그/상태 점검과 문제 진단 기본기
컨테이너를 실행하는 것보다 더 중요한 건, 문제가 생겼을 때 빨리 원인을 좁히는 능력입니다. 실무에서 장애를 길게 끄는 팀과 짧게 끝내는 팀의 차이는 화려한 도구가 아니라, docker logs, docker ps, docker inspect, docker stats 같은 기본 점검 루틴을 얼마나 일관되게 쓰느냐에서 갈…
도커를 막 배우기 시작하면 docker run은 그냥 “컨테이너 실행 명령”으로만 보입니다. 그런데 실무에서는 docker run 한 줄이 곧 실행 방식, 디버깅 편의성, 네트워크 노출, 데이터 보존 정책까지 결정합니다. 같은 이미지라도 어떤 옵션을 붙이느냐에 따라 완전히 다른 운영 결과가 나옵니다.
[도커 30강] 03강. 이미지와 컨테이너 차이, 생명주기 완전 이해
도커를 배우는 초반에 가장 많이 헷갈리는 질문이 있습니다. “이미지랑 컨테이너가 뭐가 달라요?” 이 질문에 정확히 답하지 못하면, docker run, docker stop, docker rm 같은 기본 명령도 단순 암기가 됩니다. 반대로 이 차이를 확실히 이해하면 이후 Dockerfile, Compose, 배포 자동화…
[도커 30강] 02강. Docker 설치/데몬 구조 이해와 첫 실행 점검
1강에서 도커를 왜 써야 하는지 큰 그림을 잡았다면, 2강에서는 실제로 “제대로 설치되어 있고, 지금 당장 실습 가능한 상태인지”를 확인해야 합니다. 많은 초보자가 여기서 막히는 이유는 Docker를 하나의 프로그램으로 생각하기 때문입니다. 하지만 실제 Docker는 CLI(명령 입력 도구) + 데몬(백그라운드 엔진)…
[도커 30강] 1강. 도커를 왜 쓰는가: 내 컴퓨터에서는 되는데 서버에서는 안 되는 문제 끝내기
도커를 처음 접하면 run, build, compose 같은 명령어가 먼저 보입니다. 그런데 진짜 출발점은 명령어가 아니라 문제 인식입니다. 도커는 "새 기술"이라서 배우는 게 아니라, 개발 환경 불일치로 생기는 반복 장애를 줄이기 위해 배웁니다. 오늘은 첫 강의답게 Docker의 본질을 이해하고, 최소한의 명령으로 실…