2024. 4. 22. 21:34ㆍ카테고리 없음
## 지난 내용
https://scalar.tistory.com/203
## 도커의 장점 복습
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 실행 (윈도우 터미널) -> 설정에서 [이 프로필을 관리자 권한으로 실행]
정리)
컨테이너는 내부적으로 호스트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의 줄임말로 윈도우에서 리눅스를 사용할 수 있게 해주는 기능이다.
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
https://velog.io/@rockwellvinca/Docker-WSL-vs-Hyper-V