[Docker] Windows에 도커 설치 1편 24.04.15

2024. 4. 22. 21:34카테고리 없음

## 지난 내용

https://scalar.tistory.com/203

 

[Docker] 도커를 쓰는 이유(쉬운 설명 4분컷) 24.04.13

회사에서 Windows 로컬프로그램(.exe)을 클라우드에 올리기 위해 도커를 쓰게 됐다. 그리고 졸업작품 삽질을 진행했을 때도, (GAN 모델을 NVIDIA Jetson Nano Board에서 구동시키기) 도커를 사용했다. 도커

scalar.tistory.com

 

 

## 도커의 장점 복습

1 빠르고 가벼운 가상화 솔루션 

 - Host OS를 공유하여 필요한 최소한의 리소스만 할당받아 동작하는 방식이라 가벼움 
 - 기존 Hypervisor 엔진을 사용하지 않고, Docker Engine을 사용하여 Guest OS 없어 VM보다 훨씬 실행속도가 빠름

 - 하드웨어 가상화를 하지 않기 때문에, 메모리 엑세스, 파일 시스템, 네트워크 실행 성능이 좋음

2 개발언어에 독립적
 - 개발 언어나 툴에 상관없이 어떠한 애플리케이션이라도 만들 수 있으며, 도커에서 만들어진 애플리케이션은 이동성이 뛰어나며 어디서나 실행 가능
3 뛰어난 보안성
 - 한 컨테이너의 서비스가 해킹되어도 각 컨테이너들은 격리되어있기 때문에 원래의 서버에 영향을 미치지 않음

 

## Windows에 도커 설치를 위해 선행되어야 할 부분 WSL vs Hyper-V

도커는 리눅스 커널 기반의 컨테이너 기술이므로 Windows에서 Docker을 사용하려면 리눅스 커널에 접근할 수 있는 방법인 WSL2를 사용해야 함

하지만 이는 도커 데스크톱을 사용하면 Hyper-V를 사용하여 가상화를 수행할 수 있어 리눅스 커널(WSL)을 별도로 사용할 필요가 없음

즉, 윈도우용 도커 데스크탑은 WSL2 또는 Hyper-V 기반으로 설치할 수 있고, 어떻게 하든 도커 데스크톱을 사용하면 컨테이너로 리눅스 OS를 띄울 수 있음

 

## 커널이란?

커널은 컴퓨터의 물리적자원(하드웨어)을 추상화하여 추상화 자원으로 더 쉽게 관리해주는 관리자임

## 커널의 역할

1 CPU -> Task 관리

2 Memory -> Page 또는 Segment 관리

3 디스크 -> File 관리

4 네트워크장치 -> Socket 관리

5 외부장치와의 연결 -> 디바이스드라이버 관리

6 Interrupt 핸들링

 

## 가상머신과 WSL 동시에 사용하는 법

가끔 Hyper-v 기능이 켜져있을 때 Virtual Box나 VMware 등 가상머신이 동작하지 않는 경우 있음

이 경우 hyper-v와 가상머신 소프트웨어가 호환되지 않기 때문으로, hyper-v 기능을 잠시 꺼두면 됨

터미널을 관리자 권한으로 실행 후 아래 명령어를 실행

# 상태 확인하는 법
> bcdedit | find "hypervisorlaunchtype"

# VirtualBox 실행시
> bcdedit /set hypervisorlaunchtype off

# docker, wsl 실행시
> bcdedit /set hypervisorlaunchtype auto

 

터미널을 관리자 권한으로 실행하려면?

  • 명령 프롬프트: cmd.exe
  • Windows Terminal: wt.exe
  • Windows PowerShell: PowerShell.exe

Win + R + wt.exe 실행 (윈도우 터미널) -> 설정에서 [이 프로필을 관리자 권한으로 실행]

Auto로 되어있다

 

 

 

 

정리)

컨테이너는 내부적으로 호스트OS의 커널을 공유하므로 결과적으로 컨테이너로 리눅스OS를 띄우기 위해서는 호스트OS에 리눅스가 필요하다.

Windows에서는 주로 WSL을 사용해서 리눅스 운영체제를 사용하는데, 도커 데스크톱에서 이를 지원한다.

굳이 Windows WSL을 사용하지 않을경우 Docker는 Hyper-V를 사용하여 가상화를 수행하며, 이를 통해 리눅스 커널에 접근할 수 있다.

 

1 Windows 10/11 Professional / Education / Enterprise 에디션
    WSL2 기반 Docker Engine 사용 가능
    Hyper-V 기반 Docker Engine 사용 가능
2 Windows 10/11 Home 에디션
    WSL2 기반 Docker Engine 사용 가능

 

내가 원하는 앱 개발/배포에서 도커가 하는 일은?

    도커 허브에 이미지를 푸시해놓으니, 도커 설치하고, 컨테이너 실행하고, 딱 2단계로 애플리케이션 배포가 끝났네요.
어떤가요, 애플리케이션 배포 참 쉽죠? 물론 실제로 서비스를 운영하기 위해서는 아직 할 일이 더 많이 남아있습니다. 

    도메인도 셋업해야하고 HTTPS 인증서도 발급 받아야합니다. 또한 컨테이너 데이터를 영구적으로 보존하기 위해 데이터 볼륨도 설정해야하고 안정적인 서버 운영을 위해 다수의 인스턴스를 생성하고 트래픽을 분산하려면 로드밸런서가 필요합니다. 컨테이너를 효율적으로 사용하려면 컨테이너 오케스트레이션도 도입해야겠네요. 이렇게 더해가면 끝이 없습니다만, 도커 이미지 하나면 어디서든 원하는 서버를 실행할 수 있다는 사실을 확인했습니다.

 

 

 

## 1 Hyper-V 활성화(체크박스 체크) -> 안해도 됨 어차피 WSL2 쓸 거임

 

## 2 WSL2 설치

## 본격적 도커 설치하기 24.04.17

아래를 참고하려고 한다. 나는 Docker Desktop과 WSL이 이미 깔려있었어서 이번 기회에 Docker만 우선 삭제하고 세팅을 다시 하겠다.

## 2-1 WSL2 설치 / Ubuntu22.04 LTS 설치

WSL은 Windows Subsystem for Linux 2의 줄임말로 윈도우에서 리눅스를 사용할 수 있게 해주는 기능이다.

https://www.lainyzine.com/ko/article/a-complete-guide-to-how-to-install-docker-desktop-on-windows-10/#google_vignette

 

윈도우 Docker 설치 완벽 가이드(Home 포함)

Docker는 경량 가상화 기술인 리눅스 컨테이너 도구입니다. 윈도우 Home과 Pro에서도 몇 가지 설정을 통해 Docker Desktop을 사용할 수 있습니다. 이 글에서는 윈도우에서 Docker Desktop을 설치하는 방법을

www.lainyzine.com

wsl 명령어는 Win10이상이면 기본적으로 있다고 함.

명령어 사용 방법 : wsl.exe [Argument] [Options...] [CommandLine]      // .exe는 생략 가능.

wsl --list

만약 설치된 배포판 중 하나 삭제하고 싶다면

// 설치되어 있는 우분투 중 Ubuntu-18.04를 삭제해 보자.

> wslconfig /u Ubuntu-18.04

 

wsl --list --online // 설치 가능한 배포 목록 확인

wsl --install --distribution Ubuntu-22.04  // 추가적인 Linux용 Windows 하위 시스템 배포를 설치

 

이렇게 설치 완료가 되고, 아래 창이 뜬다.

에러 발생(해결됨 ㄱㅊ)

Installing, this may take a few minutes...                                                                              WslRegisterDistribution failed with error: 0xc03a001a                                                                   Error: 0xc03a001a ?? ??? ??? ???? ?? ??? ??? ??? ? ????. ?? ?? ??? ??? ??? ?? ?? ???? ????? ??? ?? ???? ???? ???.                                                                                                                               Press any key to continue... 

 

 

해결방법

[속성]-[내용을 압축하여 디스크 공간 절약] 체크해제

 

그러면 이제 Linux용 Windows 하위 시스템에 사용 가능한 배포가 설치됨

이제 Username과 Password 입력 필요

 

아래 명령어로 확인

> wsl --list --verbose // 설치된 배포 리스트와 자세한 정보 확인

 

 

Username : root / seoyoon

Password : 늘 하는 4자리 숫자 동일

하려고 했는데 잘못해서 창이꺼짐. 그냥 root 사용자로 들어옴

 

내 컴퓨터(> Shell)에서 우분투(# Bash)로 들어가는 법(로그인)

> wsl --user [원하는사용자명]
ex) wsl --user root

 

루트 계정으로 로그인 후 사용자 추가 및 삭제, 사용자 확인

# userdel seoyoon // 사용자 삭제

# ls -la /home // 사용자 확인(/home안에 [사용자이름] 폴더가 있는지 확인)

# adduser seoyoon // 사용자 추가

 

 

##2-2 도커 설치

방법이 2가지가 있음.

    A 도커 데스크탑 설치

    B 쌩 도커 WSL2 안 내가 설치한 배포 Ubuntu에 설치

 

나는 졸업작품할 때 쌩 도커 썼어서 B도 좋음. 그리고 A의 경우 도커 유료화에 대한 정보(개인사용자는 무료라 상관 없음)

 이 글 참고하여 보니

도커 데스크톱은 단순히 설치와 환경 설정 편의만을 위한 프로그램이 아닙니다. 
개발과 운영을 위해 필요한 많은 요소를 품고 있습니다. 
도커 데스크톱 공식 문서에 따르면, 도커 데스크톱 안에는 도커 엔진(Docker Engine), 도커 CLI 클라이언트(Docker CLI Client), 도커 빌드x(Docker Buildx), 도커 컴포즈(Docker Compose), 
도커 콘텐트 트러스트(Docker Content Trust), 쿠버네티스(Kubernetes), 도커 자격 증명 도우미(Credential Helper) 등이 함께 들어있습니다. 
그래서 단순히 도커 엔진을 넘어, 도커 생태계를 지탱하기 위한 대부분을 한번에 설치해서 쓸 수 있습니다.

그럼에도 불구하고, 이런저런 사정이 엮여 도커 데스크톱을 쓰긴 힘들고 도커 엔진이면 충분하신 분들이 계시리라 생각합니다. 
그분들께 WSL2와 도커 엔진을 엮어 네이티브 도커처럼 쓰는 방법을 공유합니다.

라고 하시고 

만약 우분투 버전이 22.04 이상이라면, ‘iptables’ 설정을 먼저 변경하고 나서 이후 과정을 따라가야 합니다. 
우분투 22.04 버전부터 ‘iptables-nft’가 기본 설정으로 잡혀있어서, WSL에서 도커를 사용할 때 호환성 이슈가 발생합니다. 
‘iptables-nft’ 대신 ‘iptables-legacy’를 사용해야 도커 데몬을 실행할 수 있습니다.

라고 하셨음. (아 어쩐지 22.04 제일 최신 깔 때 뒷골이 서늘하다 했음. (삽질로 인해 최신버전은 깔기 무서워함..))

일단 A,B 방법 모두 가능하게 20.04로 다시 깔자..

삭제하고 다시 까는 중

위 과정 고대로 따라서 root, seoyoon 계정 다시 만듬

 

글이 너무 길어져 도커 설치부터는 다음 포스팅에 하겠음.

 

## 다음에 해볼 것

1 도커 설치(A or B 방법)

2 로컬에 C# 설치하지 말고 남이 만들어준 도커 이미지로 컨테이너 만들어서 거기서 C#개발해보기

또는

3 내가 C#용 도커 이미지를 만들어서 배포하기(도커 허브에?)

 

 

 

## 참고자료

https://goddaehee.tistory.com/251

 

[Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치)

[Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Window10 도커 설치 ] 입니다. : ) 도커 설치하기 ▶ 1. 도커란? 도커 설치와 관련된 포스팅 이기에

goddaehee.tistory.com

https://velog.io/@rockwellvinca/Docker-WSL-vs-Hyper-V

 

[🐋Docker] Docker Desktop 설치 시의 WSL vs Hyper-V

도커 데스크톱 설치 시, WSL을 쓸 것인가를 묻는 문구 출력 도커는 리눅스 커널 기반의 컨테이너 기술이므로 Windows에서 Docker을 사용하려면 리눅스 커널에 접근할 수 있는 방법인 WSL이 사용된다.

velog.io

https://primi.tistory.com/22

 

WSL vs. Virtual Machine 차이점 비교

Introduction WSL과 Virtual Machine 모두 윈도우 운영체제에서 리눅스 시스템이 필요할 때 로컬에서 사용할 수 있도록 해준다. 둘은 비슷하면서도 차이점이 있는데, 차이점에 대해 실욕적인 측면에서 알

primi.tistory.com

https://hstory0208.tistory.com/entry/kernel-%EC%9D%B4%EB%9E%80-%EC%89%BD%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

 

[Linux] kernel(커널) 이란 ? 쉽게 알아보자

컴퓨터는 크게 2가지로 구분할 수 있습니다. 물리적으로 만질 수 있는 하드웨어(키보드, 모니터, 컴퓨터 본체와 본체 안에 있는 CPU, 메모리 등) 물리적으로 존재하지 않는 소프트웨어 그리고, 소

hstory0208.tistory.com