2022. 3. 15. 15:55ㆍ[Docker]_Infra 구축
목표 ] Window 환경에서 CentOS7 을 WSL2 환경에 실행후 해당 CentOS7 안에 Docker 실행하기.
Docker 란?
경량 가상화 기술이며 리눅스 컨테이너를 기반으로 이미지를 기준으로 프로세스를 격리하여 실행시킬 수 있게 해줍니다.
이미지 파일만 있으면 어디서든지 똑같이 동작하는 컨테이너를 만들 수 있습니다.
이미지 파일은 최조에 한번 로드 되며,
이를 컨테이너에 올리고 컨테이너를 실행시킴으로써 이미지파일에는 어떠한 영향을 끼치지 않습니다.
수정과 배포가 용이합니다.
Docker 를 윈도우에서 사용하기 위해서는 Docker Desktop을 설치해서 Docker를 사용할 수 있습니다.
조건]
1. window 최신버전이여야 합니다.
Docker Desktop은 hyper-v 의 기능을 사용하여 구현하기 때문에
컴퓨터가 해당 기능을 지원하는지 먼저 확인해야 합니다.
2. WSL2 를 설치하고 활성화하기.
window 에서 centos7를 설치하는 방법은 다양합니다.
저는 wsl2 기술을 이용해서 설치하도록 하겠습니다.
환경설정]
1] WSL2 설치
우선 wsl2를 설치해야합니다.
이도 마찬가지로 최신 버전이여야 하며, windows 1의 20h1 이상 버전이여야 합니다.
windows + s 키 -> PC정보 검색 -> 버전확인.
1-1] 가상 터미널을 관리자 권한으로 실행
1-2] DISM -> 배포 이미지 서비스 및 관리 기능 활성화
$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
1-3] virtualMachinePlatform 기능 활성화
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
1-4] 재부팅
2] 마이크로소프트 공식 WSL2설치 가이드에 따라 wsl2 를 설치.
https://docs.microsoft.com/ko-kr/windows/wsl/install#step-4---download-the-linux-kernel-update-package
2-1] 터미널에서 기본적으로 wsl 버전이 아니라 2를 사용할 것이기 때문에 2로 변경하기
$ wsl --set-default-version 2
2-2] Windows Terminal 혹은 PowerShell 작업관리자로 열기
2-3] 명령어 입력
$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2-4] 완료 되었다는 문구가 뜨면 윈도우 재부팅
3] dockerDesktop 설치
https://www.docker.com/products/docker-desktop
링크를 타고 다운로드 클릭이후 쭉쭉 진행하기
3-1] 설치가 되면 해당 앱을 실행시킵니다
3-2] 상단의 톱니바퀴 setting 을 클릭
general 부분의 Use the WSL 2 based engine에 체크가 되어있는지 확인합니다. 미리 체크가 되어있을 텐데, 혹시 되어있지 않다면 체크하고 오른쪽 아래의 Apply & Restart 버튼을 클릭
3-3]왼쪽 사이드바에서 Resource > WSL Integration 메뉴
Enable Integration with my default WSL distro에 체크되어있는지 확인합니다. 체크가 되어있지 않을 텐데 체크하고 오른쪽 아래의 Apply & Restart 버튼을 클릭
4] CentOS7 설치
4-1] 아래의 git 주소에서 Centos.zip 파일 다운로드
https://github.com/wsldl-pg/CentWSL/releases/tag/7.0.1905.1
4-2] 다운받은 파일 압축을 풀고 안의 CentOS.exe. 파일을 관리자 모드로 실행한다. -> 자동설치
4-3] 다시한번 그 CentOS.exe 파일을 관리자 모드로 실행한다 ->프로그램 실행.
Centos7 설치완료!
+@] wls2 기본 Defalut 를 centos7로 전환하기
1] powershell 에서 명령어 입력
$ wsl -l -v
설치된 배포 목록이 나옵니다.
여기서 *이 있는 것이 디폴트로 설정된 배포입니다.
디폴트 변경 명령어]
$ wsl --set-default CentOS7
이젠 터미널 혹은 powershell 에서 wsl 명령어로 바로 실행됩니다.
5] Centos7 안에 docker 설치
5-1] Centos 콘솔에 명령어 입력
$ yum -y update
5-2] docker 를 다운로드할 wget 설치
y$ um install wget
5-3] wget으로 docker 설치
$ sudo wget -qO- https://get.docker.com/ | sh
중간중간 y 누릅니다.
5-4] 도커를 가동시키는 코드 실행
$ systemctl start docker
5-5] 만약 부팅시 자동으로 실행하도록하는 방법
$ systemctl enable docker
* 설치확인
$ systemctl status docker
* 만났던 오류들
1. 내 머리의 오류
이전에 잘못 이해한것
windows 의 터미널이나 powershell 에서의 wsl2 접근하여 열린 콘솔은 centos7.exe.를 실행시킨 콘솔과 같은 화면이다.
windows에 docker를 설치 = Docker Desktop -> 이후 window에 install docker를 하면 centos도 접근 가능할거라고 생각하였으나 전혀 별개의 서버임
2. Failed to get D-Bus connection: Operation not permitted
2일정도 해메었는데, Centos.exe를 실행시키고 docker 를 wget으로 성공적으로 다운받았음에도 불구하고
systemctl start docker 명령어를 실행시
다음과 같은 오류를 내뿜었다.
Failed to get D-Bus connection: Operation not permitted
구글링 결과로는 전부 docker 위에 centos7을 올려서 하는 방법에서의 오류를 설명하였고
한참을 해멘 결과 다음과 같은 해결방법이 있었다.
해결방법]
1. 오류 내용과 원인 : https://github.com/DDoSolitary/LxRunOffline/issues/88
2. systemclt 스크립트 수정을 해야합니다 centos7.exe. 콘솔을 엽니다.
3. 다음 코드를 붙여넣습니다.
mv /usr/bin/systemctl /usr/bin/systemctl.old
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
chmod +x /usr/bin/systemctl
'[Docker]_Infra 구축' 카테고리의 다른 글
[Docker]_MongoDB 설치 후 Robo 3T 연결(feat. docker-compose) (0) | 2022.04.11 |
---|