본문 바로가기
IT

[리눅스 기초 #11] "내 컴퓨터에선 됐는데?" : 도커(Docker)로 환경 문제 완벽하게 끝내기

by sunyjiny 2026. 1. 28.
반응형

리눅스 기본 명령어를 마스터하고 나면 개발자로서 마주하는 다음 커다란 장벽은 바로 **'환경 설정'**입니다. 새로운 팀 프로젝트에 합류하거나 서버를 옮길 때마다 Python 버전을 맞추고, DB를 깔고, 라이브러리 충전 문제를 해결하다 보면 "분명 내 컴퓨터에서는 잘 돌아갔는데 왜 서버에선 안 되지?"라는 탄식이 터져 나옵니다.

오늘은 리눅스 활용의 꽃이자, 현대 개발자의 필수 덕목인 **도커(Docker)**를 처음 접하며 느꼈던 해방감과 실전 활용법을 공유합니다.


1. 나의 경험담: "지옥의 환경 설정에서 탈출하다"

최근 AI API를 연동한 Flutter 백엔드 서버를 구축하던 중이었습니다. 로컬 윈도우(WSL2)에서 공들여 세팅한 개발 환경을 실제 리눅스 서버로 옮겨야 했죠. 하지만 서버의 OS 버전이 미세하게 달랐고, 그 결과 수많은 라이브러리 충돌 메시지가 화면을 뒤덮었습니다.

이틀 밤을 꼬박 새우며 설정을 맞추다 결국 포기하고 도커를 꺼내 들었습니다. 미리 만들어둔 '컨테이너 이미지'를 서버에서 실행하자마자, 단 5초 만에 모든 기능이 거짓말처럼 정상 작동했습니다. 그 순간 깨달았습니다. "아, 이제 더 이상 환경 설정 때문에 고통받을 시대는 지났구나."


2. 도커(Docker)란 무엇인가?

도커는 비유하자면 **'모든 것이 갖춰진 이삿짐 컨테이너'**입니다. 내가 코딩한 결과물뿐만 아니라 OS, 라이브러리, 환경 변수까지 통째로 박스 안에 넣어버리는 것이죠. 이 박스(컨테이너)만 있으면 윈도우든 리눅스든 맥이든 어디서나 동일하게 작동합니다.


3. Action: 도커의 첫걸음, 'Hello World' 엔진엑스 띄우기

리눅스 터미널(WSL2)에 도커가 설치되어 있다면, 다음 명령어로 아주 쉽게 웹 서버를 띄워볼 수 있습니다. 이번 실험에서는 세계적으로 가장 많이 쓰이는 웹 서버인 Nginx를 컨테이너로 실행해 보겠습니다.

실험 코드:

Bash
 
# 1. 도커 이미지 내려받기 및 컨테이너 실행
# -d: 백그라운드 실행, -p 8080:80: 윈도우의 8080포트를 컨테이너의 80포트로 연결
sudo docker run -d -p 8080:80 --name my_web_server nginx

# 2. 실행 중인 컨테이너 확인
sudo docker ps

(▲ Before: 아무것도 없던 터미널에서 명령어 한 줄을 입력하자, 순식간에 웹 서버 엔진이 가동되었습니다.)


4. 실전 실험: 컨테이너 내부 들여다보기

도커의 진정한 매력은 실행 중인 컨테이너 내부로 직접 들어가 리눅스 명령어를 그대로 쓸 수 있다는 점입니다.

실행 코드:

Bash
 
# 실행 중인 컨테이너 내부 터미널로 접속하기
sudo docker exec -it my_web_server bash

# 컨테이너 안에서 리눅스 버전 확인
cat /etc/os-release

컨테이너 안으로 들어가면 마치 새로운 리눅스 컴퓨터를 한 대 산 것 같은 기분이 듭니다. 여기서 마음껏 실험하고 코드를 수정해도, 원래 내 컴퓨터(호스트)에는 아무런 영향을 주지 않습니다. 이것이 바로 도커가 제공하는 **'격리된 자유'**입니다.


5. After: 결과 확인 및 정리 (마치며)

이제 브라우저 주소창에 localhost:8080을 입력해 보세요. "Welcome to nginx!"라는 문구가 뜬다면 여러분은 방금 인생 첫 번째 리눅스 컨테이너를 가동하는 데 성공한 것입니다.

(▲ After: 복잡한 설치 과정 없이 명령어 한 줄로 완성된 웹 서버. 이제 이 컨테이너는 어느 리눅스 서버로 가든 똑같이 작동할 것입니다.)


💡 2026년 개발자의 통찰: "환경을 소유하지 말고 배포하라"

리눅스 기본 명령어가 '개별 도구'를 다루는 법이었다면, 도커는 그 도구들을 담는 '가방'을 만드는 법입니다.

  • 확장성: 서버가 100대가 되어도 똑같은 컨테이너를 100번 실행하면 끝입니다.
  • 복구력: 무언가 꼬였다면? 그냥 컨테이너를 지우고 새로 다시 띄우면 1초 만에 초기 상태로 복구됩니다.

오늘의 실험을 통해 환경 설정의 늪에서 벗어나 오직 '개발'에만 집중할 수 있는 발판을 마련했습니다. 이제 여러분의 리눅스 실력은 단순한 운영체제 활용을 넘어 '인프라의 자동화' 단계로 진입했습니다.

이 글이 도움이 되셨나요? 제 블로그 sunyjini.com에서는 리눅스와 도커, 그리고 AI를 결합한 최신 개발 트렌드를 매일 기록하고 있습니다.

혹시 내가 직접 만든 파이썬 소스 코드를 도커 이미지로 굽는 'Dockerfile' 작성법이 궁금하신가요? 다음 포스팅에서 아주 상세히 다뤄보겠습니다!

반응형