성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] A graphical depiction of the steps ...
[정성태] 질문을 주셔서 출판사 측에 문의를 했습니다. 약 한 달 정도 후...
[Thorondor
] @정성태 개인 블로그인데도 거의 커뮤니티 급 인 것 같아요. 요...
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>WSL 인스턴스 초기 설정 명령어</h1> <p> Microsoft Store에 방문, Ubuntu 20.04를 검색해,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Ubuntu 20.04 LTS ; <a target='tab' href='https://www.microsoft.com/en-us/p/ubuntu-2004-lts/9n6svws3rx71'>https://www.microsoft.com/en-us/p/ubuntu-2004-lts/9n6svws3rx71</a> </pre> <br /> 새로 설치하면 shell 창이 하나 뜨고 계정 정보 입력, 이후 sudo 명령어에 암호 입력을 (편의상) 생략하기 위해 sudoers 파일을 업데이트합니다. (WSL은 Windows 10 개인 운영체제에서 동작시키므로 편의상 이 작업을 해두지만, 실제 리눅스 머신에서는 권장하지 않습니다.)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ sudo visudo // 또는, $ sudo nano /etc/sudoers </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > %sudo ALL=(ALL:ALL) <span style='color: blue; font-weight: bold'>NOPASSWD:</span> ALL [centos 9: 별도 파일 생성] $ pwd /home/testusr $ sudo cat /etc/sudoers.d/tesusr tsetusr ALL=NOPASSWD: ALL </pre> <a name='wsl_2'></a> <br /> 최초 설치 시에는, WSL 버전의 기본값이 1이므로 원한다면 이것을 2로 올려줍니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>wsl -l -v</span> NAME STATE VERSION * <span style='color: blue; font-weight: bold'>Ubuntu-20.04</span> Running <span style='color: blue; font-weight: bold'>1</span> docker-desktop-data Running 2 docker-desktop Running 2 c:\temp> <span style='color: blue; font-weight: bold'>wsl --set-version Ubuntu-20.04 2</span> </pre> <br /> 이후 인스턴스를 실행해 update & upgrade를 하고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ sudo apt update && sudo apt upgrade -y </pre> <br /> 이와 함께 .NET 5도 설치해 주고, <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ sudo apt-get install -y apt-transport-https && sudo apt-get install -y dotnet-sdk-5.0 </pre> <br /> 기본적으로 WSL 인스턴스는 Store App의 특성상 %LOCALAPPDATA%\Packages 폴더에 생성되는데, 이것이 마음에 들지 않는다면 아래의 글을 통해 다른 디렉터리로 옮길 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > WSL 인스턴스 export/import 방법 및 단축 아이콘 설정 방법 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/12569'>https://www.sysnet.pe.kr/2/0/12569</a> </pre> <br /> <hr style='width: 50%' /><br /> <br /> <a target='tab' href='https://www.sysnet.pe.kr/2/0/12168'>Docker Desktop for Windows</a>와 연동하고 싶다면 "Settings" / "General"의 "Use the WSL 2 based engine" 옵션을 체크하고 "Apply & Restart" 버튼을 누릅니다. 해당 구성이 완료되면 이제 WSL 2 인스턴스에서 docker, kubectl 명령어 등이 사용가능합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ <span style='color: blue; font-weight: bold'>which docker</span> /usr/bin/docker $ <span style='color: blue; font-weight: bold'>which kubectl</span> /usr/local/bin/kubectl </pre> <br /> 여기서 유의할 것은, 해당 바이너리들은 symbolic link여서,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ <span style='color: blue; font-weight: bold'>ls /usr/bin/docker -l</span> lrwxrwxrwx 1 root root 48 Mar 18 15:29 /usr/bin/docker -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker $ <span style='color: blue; font-weight: bold'>ls /usr/local/bin/kubectl -l</span> lrwxrwxrwx 1 root root 55 Mar 18 15:29 /usr/local/bin/kubectl -> /mnt/wsl/docker-desktop/cli-tools/usr/local/bin/kubectl </pre> <br /> 저런 마운팅이 "Docker Desktop for Windows"가 실행 중인 상태에서만 연결된다는 점입니다. (즉, docker desktop을 중지했다면 WSL 인스턴스 측에서 docker, kubectl 명령어를 수행할 수 없습니다.)<br /> <br /> 또한, 기본적으로 Docker Desktop for Windows는 "DockerDesktopVM"을 띄워 그 안에 docker를 구성하는 식으로 동작하지만, "Use the WSL 2 based engine" 옵션을 선택하는 경우에는 docker 환경을 WSL 2 인스턴스내에 구성하므로 DockerDesktopVM을 사용할 필요가 없어 해당 VM을 더 이상 사용하지 않습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 하는 김에 <a target='tab' href='https://www.sysnet.pe.kr/2/0/12348'>현재 사용자 계정을 docker 그룹에도 등록</a>해 주시고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ <span style='color: blue; font-weight: bold'>sudo usermod -aG docker ${USER}</span> // 반영을 위해 로그아웃 후, 로그인 </pre> <br /> 정상동작하는지 확인합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ <span style='color: blue; font-weight: bold'>docker run hello-world</span> /* // 만약 exited인 컨테이너를 모두 삭제하고 싶다면, [리눅스] docker rm $(docker ps -a -f "status=exited" -q) [윈도우] FOR /F %i IN ('docker ps -a -f "status=exited" -q') do docker rm %i // 또는, 모든 컨테이너를 삭제하고 싶다면, [리눅스] docker rm $(docker ps -a -q) [윈도우] FOR /F %i IN ('docker ps -a -q') do docker rm %i */ </pre> <br /> <hr style='width: 50%' /><br /> <br /> 당연하겠지만, 호스트 측에 Docker Desktop for Windows와 "Use the WSL 2 based engine" 옵션을 켰다고 해서 쿠버네티스 환경까지 구성된 것은 아닙니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ <span style='color: blue; font-weight: bold'>kubectl config view</span> apiVersion: v1 clusters: null contexts: null current-context: "" kind: Config preferences: {} users: null </pre> <br /> WSL에 k8s를 구성하려면 Settings / Kubernetes / "Enable Kubernetes" 옵션을 켜고 "Apply & Restart" 버튼을 눌러야 하는데, <a target='tab' href='https://www.sysnet.pe.kr/2/0/12571'>만약 구성에 실패한다면</a> "Use the WSL 2 based engine" 옵션을 끄고 구성합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>kubectl config view</span> apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kubernetes.docker.internal:6443 name: docker-desktop contexts: - context: cluster: docker-desktop user: docker-desktop name: docker-desktop current-context: docker-desktop kind: Config preferences: {} users: - name: docker-desktop user: client-certificate-data: <a target='tab' href='https://andrewlock.net/redacting-sensitive-data-with-microsoft-extensions-compliance/'>REDACTED</a> client-key-data: REDACTED </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2127
(왼쪽의 숫자를 입력해야 합니다.)