-
[Docker] Docker Desktop 설치 (Windows 11)TIL-sparta 2024. 7. 21. 20:42
> Docker에 대해 간단하게 알아보고, Docker Desktop 앱을 설치해보았다.
학습 키워드: Docker, Windows 11, BSOD, VM, UMA Frame buffer size
1. Docker
1) What is it?:
Docker 는 container 기반의 가상화 플랫폼으로, 신속한 앱 배포, 관리, 확장을 지원한다. 앱 버전별 (앱 자체 버전이나 다른 OS별 빌드 등) image를 생성하여 push하는 방식으로 서로 다른 환경에서도 일관된 실행이 가능하다.
Figure 1. Docker(left) vs VM(right) '가상화(virtualization)'라는 키워드 때문에 VM(Virtual Machine, 가상 머신)과 헷갈릴 수 있는데, VM의 경우 하드웨어를 포함한 머신 전체를 가상화하여 각 인스턴스마다 별개의 OS를 설치하기 때문에 커널 공유가 일어나지 않아 높은 isolation level을 제공하는 반면, docker는 동일한 OS 위에서 이미지를 통해 생성된 프로세스를 container에 격리하는 구조로 이루어져 있기 때문에 커널을 공유하기 때문에 상대적으로 가볍고 오버헤드가 적어 빠르게 실행/정지를 수행할 수 있다는 차이가 있다.
2) Docker Desktop installation (Windows 11):
Figure 2. Docker Desktop 설치 중 BSOD가 발생했을 때 재부팅 시 보게되는 화면 아무것도 모르고 Docker Desktop을 그냥 설치했다가 BSOD(Blue Screen of Death)를 보게 됐다. 만약 동일한 문제를 겪게 됐다면 부팅 오류 시 진입하는 화면에서 '고급 옵션 > 시동 복구'를 진행하면 몇 분 정도 뒤에 알아서 해결되지만, Docker Desktop의 설치가 롤백된다.
Figure 3. Docker System Requirements (WSL) Docker의 설치에 필요한 사전 요구 사항이 있는데, 그 중 하나가 WSL 설치다. WSL은 Windows Subsystem for Linux의 약자로, 리눅스의 명령어나 binary executable을 윈도우에서 실행할 수 있도록 호환해주는 역할을 한다. 제어판의 'Windows 기능 켜기/끄기'에서 'Linux용 Windows 하위 시스템' 및 '가상 머신 플랫폼'을 체크하여 켜주는 것으로도 활성화 할 수 있다. 설치 후 재부팅 해주는 것도 잊지 말자.
# wsl 설치 wsl --install # 버전 확인 wsl -v
Figure 4. Powershell에서 wsl --install 을 진행했을 때 주의(참고) 사항: 앞서 언급한 BSOD 문제가 처음에는 WSL을 설치하지 않은 것이 원인이라고 생각했는데, 막상 위에서처럼 설치하고 보니 재시작 시 부팅이 안되는 문제가 있어서 원인을 찾아보게 되었고, 현재 사용중인 기종(ASUS TUF GAMING FX505DT)과 유사한 제품을 사용중인 사람이 작성한 글에서 처럼 BIOS에 진입해서 'UMA Frame buffer size' 설정을 512MB 에서 AUTO로 바꿔주니 정상적으로 부팅이 됐다.
Figure 5. BIOS 설정 변경 AMD의 내장 그래픽 카드 같은 Unified Memory Architecture 에서 자체적인 메모리 크기를 사용하지 않고 시스템의 메모리를 일정 부분 할당받아서 사용하는 구조로 되어있는데, 이 UMA Frame buffer size 값을 고정(예: 512MB)으로 지정하여 그래픽 성능을 올리는 방법(실제로는 별도의 NVidia 그래픽 카드를 사용하고 있었기 때문에 효과는 없었다)이 있다고 하여 예전에 설정해뒀었다.
확인해보니 Hypervisor에서 하나의 VM을 실행하는데 필요한 최소 요구 메모리 공간인 1GB보다 낮게 잡혀있어 BSOD가 발생한 것으로 파악됐다.
아무튼 이제 Docker Desktop 설치를 진행하면 BSOD 발생 없이 정상적으로 재부팅이 완료된다.
Figure 6. 설치된 Docker 버전 확인 Docker를 VM에 설치할 때: WSL 설치 이후 Windows Termial에서 '+' 버튼 클릭 후 Ubuntu를 눌러서 Ubuntu 설치를 해준 뒤 Ubuntu 내에서 docker ps 명령어를 사용했을 때 permission denied가 출력된다면 sudo chown root:docker /var/run/docker.sock 명령어를 입력한 뒤 터미널 종료 후 다시 켜면 해결된다.
Figure 7. Windows Terminal 화면 + 만약 설치 이후 WiFi 연결이 안되는 문제가 생겼다면 링크를 참고하여 해결하자.
--
REFERENCES:
Docker 및 VM 비교 - 애플리케이션 배포 기술 간의 차이 - AWS
도커와 VM의 차이점은 무엇인가요? 도커와 가상 머신(VM)은 애플리케이션 배포에 사용되는 두 가지 기술입니다. 소프트웨어 개발 수명 주기에서 배포는 최종 사용자를 위해 실행할 애플리케이션
aws.amazon.com
> Amazon, "Docker 및 VM 비교"
Configuring UMA Frame Buffer Size on Desktop Systems with Integrated Graphics
www.amd.com
> AMD, "Configuring UMA Frame Buffer Size on Desktop Systems with Integrated Graphics"
https://commons.wikimedia.org/wiki/File:Docker-containerized-and-vm-transparent-bg.png> Figure 1 이미지 출처
https://github.com/occidere/TIL/issues/116
> "docker 설치 후 /var/run/docker.sock의 permission denied 발생하는 경우" by occidere
https://github.com/docker/for-win/issues/13505
> GitHub, "Docker crashes Windows on reboot after install.", 답변 참고
https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/hyper-v-requirements
Windows 11 Hyper-V System Requirements
Learn about the system requirements for Windows 11 Hyper-V.
learn.microsoft.com
> Microsoft, "Windows 11 Hyper-V System Requirements"
See Also:
도커 데스크톱 없이 구축하는 WSL2와 도커 개발 환경 - 넷마블 기술 블로그
도커 유료화 정책에서 재미난 포인트는 도커 데스크톱이라는 프로그램과 도커 엔진이 서로 별개 패키지라는 부분입니다. 커맨드라인으로 도커를 사용했던 분들께는 도커 엔진만으로도 충분하
netmarble.engineering
> Netmarble, "도커 데스크톱 없이 구축하는 WSL2와 도커 개발 환경" by 박정욱
728x90'TIL-sparta' 카테고리의 다른 글
스파르타) The Last Rollback (D-35, Node.js 게임 서버 최종 프로젝트) - Protobuf (2) (0) 2024.07.23 스파르타) The Last Rollback (D-36, Node.js 게임 서버 최종 프로젝트) - Protobuf (0) 2024.07.22 [DB] 낙관적 락(Optimistic Lock), 비관적 락(Pessimistic Lock) (3) 2024.07.21 Bull 라이브러리 (Node.js) (0) 2024.07.19 [WIP] 스파르타) Ch.5 팀 프로젝트 - 타워 디펜스 온라인 (D-Day) (0) 2024.07.19