Docker를 사용하는 방법은 운영체제에 따라 다르다. Ubuntu 서버에는 Docker Engine을 직접 설치할 수 있지만, Windows와 macOS에서 Linux 컨테이너를 실행하려면 Linux 커널을 제공하는 가상화 계층이 필요하다. Docker Desktop이 이 환경과 CLI, Compose 등을 한 번에 제공한다.
설치 화면과 지원 버전은 바뀔 수 있으므로 실제 설치 전에는 각 운영체제의 공식 문서를 다시 확인하는 것이 안전하다.
설치 방식 선택
| 환경 | 권장 방식 | Linux 컨테이너 실행 위치 |
| Windows 개발 PC | Docker Desktop + WSL 2 | WSL 2 기반 Linux VM |
| macOS 개발 PC | Docker Desktop | Docker Desktop의 Linux VM |
| Ubuntu 서버 | Docker Engine | 호스트 Linux 커널 |
Docker Desktop은 회사 규모와 용도에 따라 유료 구독이 필요할 수 있다. 조직에서 사용한다면 Docker Desktop 라이선스 조건도 확인한다.
Windows: WSL 2와 Docker Desktop
Windows에서는 CPU 가상화 기능이 활성화되어 있어야 한다. 먼저 관리자 권한 PowerShell에서 WSL을 설치한다.
wsl --install
설치 후 재부팅하고 WSL 상태를 확인한다.
wsl --version
wsl --status
Docker의 WSL 2 가이드는 WSL 2.1.5 이상을 최소 조건으로 안내하며 최신 WSL 사용을 권장한다. 필요하면 다음 명령으로 업데이트한다.
wsl --update
이후 Docker Desktop for Windows 설치 문서에서 설치 프로그램을 내려받아 실행한다. 설치 후 Docker Desktop의 Settings에서 Use the WSL 2 based engine이 활성화되어 있는지 확인한다. 특정 WSL 배포판에서 Docker 명령을 사용할 계획이라면 Resources → WSL Integration에서 해당 배포판도 활성화한다.
WSL 배포판 내부에 별도의 Docker Engine을 이미 설치했다면 Docker Desktop과 충돌할 수 있다. 한 환경에서 두 데몬을 중복 운영하지 않는 편이 좋다.
macOS: CPU 아키텍처에 맞는 Docker Desktop
Mac은 Apple silicon과 Intel용 설치 파일이 다르므로 자신의 CPU에 맞는 파일을 선택한다. Docker Desktop for Mac 설치 문서에서 현재 지원 macOS 버전과 메모리 요구 사항을 확인한 뒤 설치한다.
- 알맞은
.dmg파일을 내려받는다. Docker.app을Applications폴더로 옮긴다.- Docker를 처음 실행하고 필요한 권한 설정을 승인한다.
- 메뉴 막대에서 Docker가 실행 중인지 확인한다.
Apple silicon에서 amd64 전용 이미지나 일부 명령줄 도구를 사용하면 에뮬레이션이 필요하고 성능 차이가 발생할 수 있다. 가능하면 실행 환경의 아키텍처에 맞는 멀티 플랫폼 이미지를 사용한다.
Ubuntu: 공식 apt 저장소로 Docker Engine 설치
다음 절차는 Docker 공식 저장소를 사용한다. 지원 Ubuntu 버전과 아키텍처는 Docker Engine on Ubuntu 문서에서 확인한다.
1. 충돌하는 패키지 제거
공식 Docker 패키지와 배포판 제공 패키지가 함께 있으면 충돌할 수 있다.
sudo apt remove $(dpkg --get-selections \
docker.io docker-compose docker-compose-v2 docker-doc docker-buildx \
podman-docker containerd runc | cut -f1)
기존 패키지를 제거해도 /var/lib/docker의 이미지, 컨테이너, 볼륨이 자동으로 삭제되지는 않는다. 기존 환경이라면 작업 전에 데이터를 백업하고 업그레이드 절차를 별도로 확인한다.
2. GPG 키와 저장소 등록
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
GPG 키는 내려받은 패키지가 Docker 저장소에서 서명된 것인지 검증하는 데 쓰인다. 저장소를 등록하면 이후 apt를 통해 Docker를 업데이트할 수 있다.
3. Docker 패키지 설치와 검증
sudo apt install docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
서비스 상태를 확인하고 테스트 컨테이너를 실행한다.
sudo systemctl status docker
sudo docker run --rm hello-world
일반적인 Ubuntu 설치에서는 Docker 서비스가 자동으로 시작된다. 실행 중이 아니라면 다음 명령을 사용한다.
sudo systemctl start docker
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
Linux에서 sudo 없이 실행하기
Docker 소켓은 Docker 데몬을 제어한다. 일반 사용자를 docker 그룹에 넣으면 매번 sudo를 입력하지 않아도 되지만, Docker의 Linux 설치 후 문서가 경고하듯 이 그룹은 사실상 호스트의 root 수준 권한을 부여한다.
위험을 이해하고 허용할 사용자만 추가한다.
sudo usermod -aG docker "$USER"
newgrp docker
docker run --rm hello-world
공용 서버나 권한 분리가 중요한 환경이라면 docker 그룹 대신 rootless mode를 검토한다. /var/run/docker.sock에 chmod 666을 적용하면 모든 로컬 사용자가 Docker 데몬을 제어할 수 있으므로 사용하지 않는다.
설치 결과 확인
모든 플랫폼에서 다음 명령으로 클라이언트와 서버 정보를 확인한다.
docker version
docker info
docker compose version
docker version은 클라이언트와 서버 영역을 나누어 보여준다. 클라이언트 정보만 나오고 서버 연결 오류가 발생하면 Docker Desktop 또는 dockerd가 실행 중인지, 현재 Docker context가 올바른지 확인한다.
docker context ls
마지막으로 일회성 테스트를 수행한다.
docker run --rm hello-world
이 명령은 로컬에 이미지가 없으면 Registry에서 내려받고, 컨테이너를 만들어 실행한 뒤, 종료된 컨테이너를 --rm 옵션으로 자동 삭제한다.
설치할 때 흔히 생기는 문제
가상화 기능이 꺼져 있다
Windows에서 WSL 2나 Docker Desktop이 시작되지 않으면 작업 관리자 또는 BIOS/UEFI에서 CPU 가상화 기능이 활성화됐는지 확인한다. 회사 장비에서는 보안 정책 때문에 변경 권한이 없을 수 있다.
CLI는 있지만 daemon에 연결되지 않는다
Cannot connect to the Docker daemon 오류는 CLI 설치 실패가 아니라 서버 프로세스에 연결하지 못했다는 뜻이다. Linux에서는 systemctl status docker, Desktop에서는 애플리케이션 실행 상태와 선택된 context를 확인한다.
Ubuntu 방화벽 규칙을 믿고 포트를 공개한다
Docker로 공개한 컨테이너 포트는 ufw나 firewalld 규칙을 우회할 수 있다. 외부에 포트를 노출하기 전 Docker와 패킷 필터링 문서에 따라 DOCKER-USER 체인과 클라우드 방화벽을 함께 검토한다.
핵심 정리
- Windows와 macOS의 Linux 컨테이너는 Docker Desktop이 관리하는 Linux 환경에서 실행된다.
- Ubuntu 서버에서는 Docker 공식
apt저장소를 등록해 Engine, CLI, containerd, Buildx와 Compose 플러그인을 설치할 수 있다. docker그룹은 편리하지만 root 수준 권한에 해당한다.- Docker 소켓에 모든 사용자 쓰기 권한을 부여하는
chmod 666은 피한다. - 설치 후
docker version,docker info,docker run --rm hello-world로 클라이언트, 데몬과 실행 경로를 확인한다.
참고 자료
'클라우드 > Docker' 카테고리의 다른 글
| Docker 데이터 영속화: Volume, Bind Mount와 tmpfs (0) | 2026.08.26 |
|---|---|
| Docker 컨테이너 생명 주기와 운영 명령 (0) | 2026.08.19 |
| Docker 이미지와 Registry: 이름, 태그, Digest와 배포 (0) | 2026.08.18 |
| Docker 기본 명령: 이미지부터 컨테이너 관찰까지 (0) | 2026.08.17 |
| Docker와 컨테이너: 가상 머신과 무엇이 다른가 (0) | 2026.08.17 |