Docker을 설치하려면 윈도우 11에서 가상머신 플랫폼 등을 활성화 해야 한다.
이를 위한 내용은 아래와 같다
Windows 기능 켜기/끄기
검색 -> Windows 기능 만 키워드 입력하면 Windows 기능 켜기/끄기 앱을 열 수 있다.
Docker은 가상 머신 플랫폼에서 좀 더 사용하기 쉬운 무언가
이렇게 이해하고 가상머신 활성화를 위한 작업을 수행하자.

이렇게 위에 빨간색 박스를 친 4개 항목을 활성화 해주고 PC를 재부팅하자

WSL 설치
위 과정을 모두 수행했다면 한번 PowerShell을 켠 뒤 아래의 명령어를 입력해보자
wsl --install

통상적으로 위 Windows기능을 정상적으로 수행을 다 했다면 wsl설치는 완료됬을 것이다.
설치가 완료된 것을 확인했으니 기본 wsl의 버전은 2로 고정한다.

이것에 대한 간단한 소개를 하자면
WSL은 버전1이 있고 버전2가 있는데
Docker을 다루던 최신 WSL-Ubuntu를 다루건
WSL ver2가 더 좋다 보면 된다.
Docker 설치
위 과정까지 수행했다면 Docker을 설치하기 위한 기본 세팅은 완료했다 볼 수 있다.

해당 홈페이지에 접속하여 Docker을 다운로드 받자

윈도우에서도 설치를 용이하게 하기 위해 사전 config를 진행하는것을 확인할 수 있다.


위 과정까지 수행하고 로그아웃을 하라는 메세지를 클릭하면 윈도우가 로그아웃 된 뒤


위와 같은 메세지가 뜬다
하라는 대로 하자.


로그인하고 첫 실행까지 왔으면 일단 설치는 완료인것 같다.
검증을 위해 PowerShell을 실행 후 아래의 명령어를 입력하면 docker-desktop WSL 배포판이 설치 및 정상적으로 실행되는 것을 확인할 수 있다.
wsl -l -v

wsl 커널 버전 확인하기

위 사진처럼 PowerShell에서 wsl 명령을 치면 설치되어 있는 WSL 가상화 OS 중 우선순위가 높은 OS에 바로 진입할 수 있는데
지금 PC의 경우에는
docker-desktop WSL 배포판 만이 설치되어 있기에
Docker OS에 진입햇다 볼 수 있다.
여기서 아래의 명령어를 쳐 보자
uname -r
이 명령어는 현재 설치되어 있는 WSL의 커널 버전을 확인할 수 있는 명령어로
포스트 작성 시점 설치되어 있는 커널은
5.15.167.4-microsoft-standard-WSL2
인 것으로 확인할 수 있다.
이 커널 버전의 경우 5.10.16이상의 버전이면 모두 docker을 지원하는 kernel이지만
되도록이면 최신버전으로 업데이트 하는게 건강상 좋긴 하다
최신 버전으로 업데이트 하는 방법은
wsl --update
이 명령으로 간단하게 업데이트 할 수 있지만
만약 본인만의 커스텀 커널을 만들어야 한다면
https://github.com/microsoft/WSL2-Linux-Kernel

위 사이트에 접속하여 readme를 참조하기 바란다.
살짝 골이 아픈 수준이긴 하지만 어쨋든 할 수는 있다.
도커 버전확인 + hello-world
docker --version #설치된 도커엔진 버전확인
docker run hello-world #hello-world라는 컨테이너를 실행

위 명령어를 수행한다면 도커버전 확인 및 가장 기본 컨테이너 hello-world를 실행한다
이때 컨테이너 : hello-world가 존재하지 않는다면 dockerhub에서 hello-world를 검색한 뒤 이를 다운받은 후 실행한다.
만약 docker --version보다 좀 더 자세한 정보를 알고 싶다면 docker info를 수행하면 된다.
컨테이너 설치해보기

위 사진에서 사용한 명령어와 그 기능에 대해 정리를 진행하겠다
docker images : 현재 설치한 컨테이너 리스트를 보여줌
docker pull centos:7 : docker hub에서 centos:7에 해당하는 컨테이너를 다운받아서 설치
컨테이너 실행하기

위 사진처럼 docker run 명령어를 통해서 도커 실행 구문을 작성하고
실행 목적은 시스템 컨테이너인 centos를 실행, 그리고 단순 echo명령만 수행하는 것과
bash 명령으로 해당 시스템 컨테이너가 exit 명령어를 기입하기 전까지 지속적으로 실행되게 하는 명령어를 실습해보자
# echo 명령어 수행 후 컨테이너는 종료됨
docker run -it --name=sys-container-1 centos:7 echo 'hi cento'
# 실행 이력이 있는 컨테이너 이름은 지워야함
docker rm sys-container-1
# bash 명령어로 컨테이너를 실행상태로 잡아둠
docker run -it --name=sys-container-1 centos:7 bash
컨테이너 재 실행하기
바로 위 실행까지만 수행하면 매번 컨테이너 이름을 지우고 새로 할당해서 써야하나? 라는 생각이 들겠지만
docker run은 새 컨테이너를 생성(이름을 등록) 하고 실행한다는 뜻이고
이미 등록된 컨테이너의 재 시작은 docker start 명령어를 활용해야 한다.
이에 대한 실습은 아래와 같다.

docker start [실행한 이력이 있는 컨테이너 이름]
docker exec -it [실행중인 컨테이너 이름] [수행할 명령]
이때 exit를 입력하면 해당 컨테이너를 빠져나오면서 죽어버리지만
단축키 : ctrl + p + q를 입력하면
컨테이너를 죽이지 않고 빠져나오는게 가능하다
