본문 바로가기
IT/⚇⚉cause

[Ubuntu 20.04.4 LTS] WSL2설치, Docker.io 설치, ubuntu 연결안됨 원인, Docker 삭제

by 라떼조아효 2022. 7. 5.
728x90

회사에서 로컬에 도커를 이용해서 redis 설정을 해야되는 일이 생겼다...

도커는 21.09월부터인가 유료로 전환이 되었다고 해서...(일부는 무료지만 회사로컬에서는 유료) 리눅스 환경에서 도커를 우회해서 설치하기로 했다.

 

1. 윈도우 10에 WSL2 설치

 

WSL2는 윈도우 10버전 1903의 빌드 18362이상에서만 사용이 가능하다. 

- 버전확인 하는 방법

(윈+R 실행창을 키고 winver을 입력해서 버전을 확인한다. )

 

- 윈도우 검색창에서 powershell 을 검색해서 관리자로 실행해준다.

 

- 파워셀에서 커멘드를 입력해서 기능을 활성화해준다.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

- 가상머신 플랫폼 기능을 활성화 시켜준다.

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

- 작업이 완료되었으면 컴퓨터 재부팅을 한다. (안해도됨)

- 컴퓨터 재부팅 후 파워셀을 다시 실행하고 wsl 구성시 wsl2로 구성되도록 아래 명령어를 입력하여 설정해준다.

wsl --set-default-version 2 

 

- 아래 링크로 들어가면 가장 최신 윈도우용 리눅스 커널을 다운받고 설치한다.

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

2. Ubuntu 설치

 

- 마이크로소프트 앱을 열어서 ubuntu 20.04 LTS 를 다운로드하고 실행한다.

 

- name | 패스워드 지정해주고 진행한다.

 

- 오분투 리눅스를 가장 최신으로 업데이트, 업그레이드를 해준다.

sudo apt update

sudo apt upgrade

y

 

** 오분투 업데이트가 되질 않으면 아래의 링크를 참고하자

에러 : 

E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal-updates/universe/binary-amd64/by-hash/SHA256/95435de16e2587d6e42747f8d03e02afd29a07d2a86d17de465809943bcd42e0  Hash Sum mismatch

E: Some index files failed to download. They have been ignored, or old ones used instead.

 

이유:

한국 KR 오분투 서버가 죽는 경우가 있다고한다. 

경로를 변경해도 실행이 안돼서 sources.list 파일 초기화하고 파일 경로에서 직접적으로 업데이트를 하니깐 정상적으로 실행이 됐다.

 

코드:

sudo dpkg -S apt | grep sources.list 

sudo cp /usr/share/doc/apt/examples/sources.list /etc/apt/

sudo apt update && sudo apt upgrade

 

출처: https://velog.io/@-__-/ubun7

 

** Ubuntu가 정상적으로 실행이 되지 않으면 아래 링크를 참고하자. 

에러:

The Windows Subsystem for Linux optional components is not enabled.

해결:

출처: https://github.com/microsoft/WSL/issues/4177

소켓 설정을 바꿔주는 방법이다.

 

 

++ 진짜 원인 (220708수정) [관련된 개체 종류에 대한 해당 작업은 지원되지 않습니다]

winsock 을 건드리는 프로그램(Chakra Max Client)을 설치하면 재발한다.

Add registry key를 .reg 파일로 저장해서 레지스토리를 추가하면 두개가 충돌하지 않고 잘 돌아간다.

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog\0408F7A3] "AppFullPath"="C:\\Windows\\System32\\wsl.exe" "PermittedLspCategories"=dword:80000000

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

출처: https://meganad.github.io/2022-03-25-WSL-code-4294967295-error/

 

3. Docker 설치

 

- 필수 패키지 설치

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

 

- GPG Key 인증

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

ok가 나오면 됩니다.

 

- docker repository 등록

아키텍쳐에 맞춰서 Docker repository를 등록

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

 

- apt docker 설치

sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

 

- 시스템 부팅시 docker가 시작되도록 설정하고 실행도 시켜보겠습니다.

sudo systemctl enable docker && service docker start

service docker status

Active가 뜨신다면 docker 서비스 구축까지 완료

 

제대로 설치되었는지 확인하기 위해 헬로월드 실행

sudo docker run hello-world

출처: https://blog.dalso.org/linux/ubuntu-20-04-lts/13118

https://velog.io/@pjg9606/WSL-%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-Docker-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A92-Docker-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89

 

- powerShell

wsl --lilst --verbose : 가상머신 리스트를 확인한다. 

wsl bash, wsl.exe : 오분투 접속

 

도커 완전 삭제하기

// docker container 중지

[root@dpleevbox bin]# docker stop $(docker ps -q)

// docker container 삭제

[root@dpleevbox bin]# docker rm $(docker ps -a -q)

 

local 에 저장된 image 를 모두 삭제한다.
사실 image 와 container 를 docker 명령을 통해 삭제할 필요는 없다.
아래에 /var/run/docker 내의 모든 파일, 디렉토리를 삭제하는 과정이 있다.
저장된 image 와 container 정보는 이 때 어차피 모두 제거된다.

[root@dpleevbox bin]# docker rmi $(docker images -q)

docker service, containerd service 를 중지한다.

[root@dpleevbox bin]# systemctl stop docker.service

[root@dpleevbox bin]# systemctl stop containerd.service

docker package(여기에서는 docker-ce package)를 삭제한다.
docker-ce 는 docker daemon 관련 패키지이고, containerd.io 는 containerd 관련 패키지, docker-ce-cli 는 client 관련 패키지이다.
(Docker 프로젝트들이 요즘은 완전히 분리되어 별도의 Component 들로 관리하는 경향이 있다.)
참고로, 이렇게 패키지가 분리되어 있기 때문에, 때로는 container 를 전혀 중지하지 않고 docker daemon 만 upgrade 하는 등의 작업이 가능하다.

// 설치된 docker 관련 패키지 확인

[root@dpleevbox ~]# yum list installed | grep docker

containerd.io.x86_64 1.2.6-3.3.el7 @docker-ce-stable

docker-ce.x86_64 3:19.03.1-3.el7 @docker-ce-stable

docker-ce-cli.x86_64 1:19.03.1-3.el7 @docker-ce-stable

 

// containerd, docker-ce, docker-ce-cli 패키지 모두 삭제

[root@dpleevbox bin]# yum erase containerd.io.x86_64

[root@dpleevbox bin]# yum erase docker-ce.x86_64

[root@dpleevbox bin]# yum erase docker-ce-cli.x86_64

/var/lib/docker 아래의 모든 파일, 디렉토리를 삭제한다.

[root@dpleevbox run]# cd /var/lib/docker

[root@dpleevbox docker]# rm -rf *

/var/run 아래에서 docker.sock, docker.pid 파일과 docker 디렉토리를 삭제한다.

[root@dpleevbox bin]# cd /var/run

[root@dpleevbox run]# rm docker.sock docker.pid

rm: remove 소켓 `docker.sock'? y

[root@dpleevbox run]# rm -rf docker

출처: http://cloudrain21.com/remove-docker-forcely-and-reinstall