Linux에 Docker Desktop 설치하기

Linux에 Docker Desktop 설치하기

이 페이지는 일반 시스템 요구 사항, 지원 플랫폼, 그리고 Linux용 Docker Desktop 설치 방법에 대한 정보를 담고 있어요.

출처: Install Docker Desktop on Linux

본문

Docker Desktop 약관: 더 큰 기업(직원 250명 초과 또는 연간 매출 1천만 달러 초과)에서 Docker Desktop을 상업적으로 사용하려면 유료 구독이 필요해요.

중요: Linux의 Docker Desktop은 시작 시 desktop-linux라는 커스텀 docker 컨텍스트를 만들고 사용하는 VM(Virtual Machine)을 실행해요. 즉 설치 전에 Linux Docker Engine에 배포한 이미지와 컨테이너는 Linux용 Docker Desktop에서 사용할 수 없어요.

Linux용 Docker Desktop은 컨테이너와 서비스 관리를 단순화하는 사용자 친화적 GUI를 제공해요. Docker Engine을 포함하고(이것이 컨테이너를 구동하는 핵심 기술) Docker Scout, Docker Extensions 같은 추가 기능도 제공해요.

Docker Desktop과 Docker Engine 설치

Linux용 Docker Desktop과 Docker Engine은 같은 머신에 나란히 설치할 수 있어요. Docker Desktop은 컨테이너와 이미지를 VM 안의 격리된 스토리지 위치에 저장하고, 리소스를 제한하는 제어 기능을 제공해요. 전용 스토리지 위치를 사용하면 Docker Desktop이 같은 머신의 Docker Engine 설치를 방해하지 않아요.

둘을 동시에 실행할 수 있지만, 동시에 실행할 때 문제가 생기는 상황이 있을 수 있어요. 예를 들어 컨테이너의 네트워크 포트 매핑(-p / --publish) 시 Docker Desktop과 Docker Engine이 같은 포트를 예약하려 해서 "port already in use" 충돌이 날 수 있어요. 일반적으로 Docker Desktop을 사용하는 동안에는 Docker Engine을 멈춰 두는 걸 권장해요. Docker Engine 서비스를 멈추려면:

$ sudo systemctl stop docker docker.socket containerd

설치에 따라 Docker Engine이 머신 시작 시 시스템 서비스로 자동 시작되도록 설정됐을 수 있어요. 자동 시작을 막고 서비스를 비활성화하려면:

$ sudo systemctl disable docker docker.socket containerd

Docker Desktop과 Docker Engine 사이 전환

Docker CLI는 여러 Docker Engine과 상호작용할 수 있어요. 같은 Docker CLI로 로컬 Docker Engine과 클라우드에서 실행 중인 원격 Docker Engine 인스턴스를 제어할 수 있죠. Docker Contexts를 사용하면 Docker Engine 인스턴스 사이를 전환할 수 있어요.

Docker Desktop을 설치하면 Docker Desktop과 상호작용하기 위한 전용 "desktop-linux" 컨텍스트가 만들어져요. 시작 시 Docker Desktop은 자체 컨텍스트(desktop-linux)를 현재 컨텍스트로 자동 설정해요. 즉 이후 Docker CLI 명령이 Docker Desktop을 대상으로 해요. 종료 시 Docker Desktop은 현재 컨텍스트를 default로 리셋해요.

docker context ls로 머신에 있는 컨텍스트를 볼 수 있어요. 현재 컨텍스트는 별표(*)로 표시돼요.

$ docker context ls
NAME            DESCRIPTION                               DOCKER ENDPOINT                                  ...
default *       Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                      ...
desktop-linux                                             unix:///home//.docker/desktop/docker.sock  ...

같은 머신에 Docker Desktop과 Docker Engine이 모두 있으면 docker context use 명령으로 전환할 수 있어요. Docker Engine과 상호작용하려면 "default" 컨텍스트를 사용하고:

$ docker context use default
default
Current context is now "default"

Docker Desktop과 상호작용하려면 desktop-linux 컨텍스트를 사용해요.

$ docker context use desktop-linux
desktop-linux
Current context is now "desktop-linux"

자세한 내용은 Docker Context 문서를 참고하세요.

지원 플랫폼

Docker는 다음 Linux 배포판과 아키텍처에 대해 .deb.rpm 패키지를 제공해요.

플랫폼 x86_64 / amd64
Ubuntu
Debian
Red Hat Enterprise Linux (RHEL)
Fedora

Arch 기반 배포판에는 실험적(experimental) 패키지가 있습니다. Docker는 이 설치를 테스트하거나 검증하지 않았어요. Docker는 위 배포판의 현재 및 이전 LTS 릴리스와 가장 최근 버전에서 Docker Desktop을 지원해요.

일반 시스템 요구 사항

Linux 호스트는 다음 일반 요구 사항을 충족해야 해요.

  • 가상화를 위한 64비트 커널과 CPU 지원.
  • KVM 가상화 지원. KVM 커널 모듈이 활성화됐는지, KVM 장치 접근 권한을 어떻게 줄 수 있는지 확인하려면 KVM 가상화 지원 지침을 따르세요.
  • QEMU 버전 5.2 이상. 최신 버전으로 업그레이드하는 걸 권장해요.
  • systemd init 시스템.
  • GNOME, KDE, MATE 데스크톱 환경이 지원되지만 다른 것도 동작할 수 있어요. 많은 배포판에서 GNOME 환경은 트레이 아이콘을 지원하지 않아요. 트레이 아이콘 지원을 추가하려면 AppIndicator 같은 GNOME 확장을 설치해야 해요.
  • 최소 4GB RAM.
  • user namespace에서 ID 매핑 구성을 활성화. 단, Docker Desktop 4.35 이상에서는 더 이상 필요하지 않아요.
  • 권장: 자격 증명 관리를 위한 pass 초기화.

Docker Desktop for Linux는 VM을 실행해요. 중첩 가상화 시나리오에서 Docker Desktop for Linux를 실행하는 것은 Docker가 지원하지 않아요. 지원 배포판에서 네이티브로 실행하는 것을 권장해요.

KVM 가상화 지원

Docker Desktop은 KVM 지원이 필요한 VM을 실행해요. 호스트가 가상화를 지원하면 kvm 모듈이 자동으로 로드돼야 해요. 수동으로 로드하려면:

$ modprobe kvm

호스트 머신의 프로세서에 따라 해당 모듈을 로드해야 해요.

$ modprobe kvm_intel  # Intel processors

$ modprobe kvm_amd    # AMD processors

위 명령이 실패하면 다음으로 진단 정보를 볼 수 있어요.

$ kvm-ok

더 알아보기