2025. 10. 8. 13:15ㆍ프로그램/PHP 최상급
안녕하세요. #PHP 최상급 과정 3주차에서는 현대 개발 환경에서 필수적인 컨테이너 기술, 특히 #Docker를 다룹니다. 이번 시간에는 #Docker의 기본 #개념을 이해하고, 실습 환경을 위한 #설치 방법을 알아보겠습니다.
컨테이너 기술의 등장 배경

과거에는 개발, 테스트, 운영 환경을 일치시키기 어렵다는 고질적인 문제가 있었습니다. "내 컴퓨터에서는 잘 되는데, 서버에서는 안 돼요(It works on my machine)"라는 말이 개발자들 사이에서 흔했습니다.
이러한 환경 불일치 문제를 해결하기 위해 가상 머신(Virtual Machine, VM) 기술이 사용되었지만, #VM은 무거운 #운영체제(OS) 전체를 가상화해야 하므로 느리고 리소스 소모가 컸습니다.
#컨테이너 기술은 VM의 단점을 극복하고, 애플리케이션과 그 종속성을 하나의 격리된 환경(#컨테이너)에 패키징하여, 어떤 환경에서든 일관되게 실행되도록 보장합니다.
Docker의 핵심 개념 이해

#Docker는 컨테이너 기술을 활용하여 애플리케이션을 쉽게 패키징, 배포, 실행할 수 있도록 돕는 플랫폼입니다.
💡 Docker와 VM의 차이점
| 구분 | 가상 머신 (VM) | Docker 컨테이너 |
| 운영체제 | 각 VM마다 독립적인 OS 포함 | 호스트 OS의 커널을 공유 |
| 자원 소모 | 높음 (수 GB 단위) | 낮음 (수 MB 단위) |
| 시작 속도 | 느림 (분 단위) | 빠름 (초 단위) |
| 격리 수준 | 하드웨어 수준의 완전 격리 | OS 커널 수준의 격리 (Cgroups, Namespaces 활용) |
📚 Docker 주요 용어
- 이미지 (Image):
- 애플리케이션 실행에 필요한 모든 것(코드, 런타임, 시스템 도구, 라이브러리 등)을 포함하는 읽기 전용의 템플릿입니다.
- 하나의 클래스나 설계도와 같아서, 이것을 기반으로 컨테이너를 생성합니다.
- 예: php:8.3-fpm 이미지, mysql:8.0 이미지.
- 컨테이너 (Container):
- 이미지를 실행한 상태로, 격리된 환경에서 동작하는 실제 애플리케이션 인스턴스입니다.
- 하나의 객체나 실행 중인 프로세스와 같아서, 생성, 시작, 중지, 삭제가 가능합니다.
- Docker Hub / Registry:
- 공개적으로 사용 가능한 도커 이미지를 저장하고 공유하는 중앙 저장소입니다. #GitHub와 유사합니다.
- Dockerfile:
- 사용자 정의 이미지를 빌드하기 위한 명령어가 담긴 텍스트 파일입니다. #PHP 환경 설정, 필요한 확장 설치 등의 과정을 이 파일에 기술합니다.
Docker 설치 및 기본 환경 설정

#Docker를 사용하기 위해서는 호스트 운영체제에 #Docker Engine을 설치해야 합니다.
💻 설치 (Docker Desktop 권장)
가장 쉬운 방법은 Docker Desktop을 설치하는 것입니다.
- Windows / macOS:
- Docker 공식 웹사이트에서 Docker Desktop 설치 파일을 다운로드하여 실행합니다. #Docker Desktop은 #Docker Engine, #Docker CLI, #Docker Compose, #Kubernetes 등의 도구를 포함하는 통합 환경입니다.
- 설치 후, 시스템 트레이에서 Docker 아이콘을 확인하고 Running 상태인지 확인합니다.
- Linux (Ubuntu 예시):
- 공식 문서를 참고하여 apt-get 등을 통해 #Docker Engine과 #Docker CLI를 설치합니다.
- (주의: Linux 서버 환경에서는 Docker Desktop이 아닌 #Docker Engine만 설치하는 경우가 일반적입니다.)
🧪 설치 확인
설치가 완료되면 터미널(명령 프롬프트)을 열고 다음 명령어를 입력하여 정상적으로 설치되었는지 확인합니다.
docker --version
docker run hello-world
🔗 Docker Compose
#PHP 애플리케이션은 보통 #웹 서버(Nginx/Apache), #PHP FPM, #데이터베이스(MySQL/PostgreSQL) 등 여러 컴포넌트로 구성됩니다. #Docker Compose는 이러한 다중 컨테이너 애플리케이션을 하나의 파일(docker-compose.yml)로 정의하고, 단일 명령으로 실행 및 관리할 수 있게 해주는 도구입니다. 다음 주차부터 이 #Docker Compose를 적극적으로 활용할 예정입니다.
블로그KT고정, 쇼핑/지도 마케팅KT유동, 게임/앱플레이어 고정IP, 24시간상담 대량구매 시 할인혜택 제공!
VPN 5,500원 / IP교체 1,100원 / 유동프록시 22,000원 | LuzenVPN 루젠VPN
국내최저가 고정IP서비스,유동프록시(IP4000개이상제공),PPTP,L2TP,IPSec,OpenVPNVPN,통신사VPN,VPN프로그램,고정IP,고정아이피,PPTP,저렴한VPN,리니지MVPN,리니지VPN,아이온VPN,던파VPN,유동프록시,유동PROXY,바이
vpn.luzensoft.com