이번 포스팅에서는 Docker를 설치하는 방법에 대해 알아보기로 합시다. 윈도우용 도커 데스크톱 설치만 다루는 점 양해바랍니다.
① 제어판 > 프로그램 > 프로그램 및 기능 > Windows 기능 켜기/끄기 버튼을 클릭한다.
② Linux용 Windows 하위 시스템, 가상 머신 플랫폼에 체크하고 확인 버튼을 클릭한다.
③ 아래의 URL에 접속하여 리눅스 커널을 다운로드 받는다.
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
④ 이번에는 아래의 URL에 접속하여 윈도우용 도커 데스크톱을 다운로드 받는다.
https://docs.docker.com/desktop/install/windows-install/
⑤ 다운로드 받은 파일을 실행하고, Configuration 화면에서 모든 항목에 체크한다음 OK 버튼을 클릭한다.
⑥ 설치가 완료되면, Close and log out 버튼을 클릭해 윈도우에 다시 로그인한다.
⑦ 바탕화면에 Docker Desktop이 추가된 것을 확인할 수 있다.
① Docker Desktop을 실행하고 Task Tray에 Docker 아이콘이 잘 나타나는지 확인한다.
② 좌측 메뉴에 Constainers와 Images 탭이 있는 것을 확인할 수 있다.
③ 화면 좌하단에 초록색 바탕으로 running이라고 적혀있으면 도커가 정상적으로 실행 중인 것이다.
④ 설정 아이콘을 클릭한 후 General 탭에서 Use the WSL 2 based engine이 체크되어 있는지 확인한다.
※ WSL2와 Hyper-V
Hyper-V는 Microsoft 사의 Windows 가상화 플랫폼으로, 가상 머신을 만들고 실행할 수 있는 환경을 제공한다. 원래 도커 데스크톱은 윈도우 10 프로 이상의 버전에서만 사용 가능한데, 이는 Hyper-V가 프로 이상의 버전에만 포함되어 있기 때문이다.
그러다가 나중에 윈도우 업데이트에서 WSL2(Windows Subsytem for Linux 2)가 추가되면서, 윈도우 10 홈 에디션에서도 도커 데스크톱을 사용할 수 있게 된 것이다. 따라서, 윈도우 10 홈 에디션을 사용하는 경우 도커 엔진이 WSL2 위에서 동작하고 있는지 확인해야 한다.
⑤ 도커 엔진을 종료하고 싶다면, Task Tray에서 Quit Docker Desktop 버튼을 클릭하면 된다.
컨테이너를 다루는 모든 명령은 docker로 시작한다. docker 명령어의 기본적인 형태는 아래와 같다.
docker 커맨드 (옵션) 대상 (인자)
각각이 무엇을 의미하는지 하나하나 살펴보기로 하자.
① 커맨드
② 옵션
--name chrome
③ 대상
container start chrome // 이름이 chrome인 이미지의 컨테이너를 실행한다.
④ 인자
--mode=1 // 모드 1로 실행한다.
컨테이너를 실행할 때에는 docker run(또는 docker container run) 커맨드를 사용한다. 이 커맨드는 도커 컨테이너를 생성하고 실행하는 기능과 필요에 따라 이미지를 다운로드 받는 기능도 수행한다. 즉, docker run은 아래의 3가지 커맨드를 한번에 수행하는 명령인 셈이다.
docker pull // 또는 docker image pull, 이미지 다운로드
docker create // 또는 docker container create, 컨테이너를 생성
docker start // 또는 docker container start, 컨테이너를 실행
자세한 건 나중에 설명하겠지만, docker run은 다양한 옵션과 결합되어 사용될 수 있다. 컨테이너의 이름은 --name 옵션, 포트 번호는 -p, 볼륨을 마운트할 때에는 -v, 컨테이너를 연결할 네트워크는 --net 옵션을 사용할 수 있다.
docker run (옵션) 이미지 인자
또한, 데몬 형태로 동작하는 소프트웨어의 컨테이너는 일반적으로 -d, -i, -t 옵션(합쳐서 -dit)과 함께 사용된다. 여기서 -d는 컨테이너를 백그라운드로 실행한다는 의미이고, -i와 t는 컨테이너 내부에 터미널로 접속한다는 의미이다. 물론, 실행되자마자 종료되는 컨테이너에는 이러한 옵션을 사용할 필요가 없다.
컨테이너를 실행하는 방법을 배웠으니, 이제 정지하고 폐기하는 방법도 배워야 한다. 실행 중인 컨테이너를 바로 삭제하기 위해선, 먼저 컨테이너를 정지시켜야 한다. 컨테이너를 정지시킬 때에는 docker stop(또는 docker container stop) 명령을 사용한다. 이 커맨드에 별도의 옵션이나 인자를 지정하는 일은 거의 없다.
docker stop 컨테이너 이름
반드시 정지된 컨테이너에 대해 삭제를 수행해야 한다. 컨테이너를 삭제할 때에는 docker rm(또는 docker container rm) 명령을 사용하며, 이 명령도 옵션이나 인자를 지정할 일이 거의 없다.
docker rm 컨테이너 이름
리눅스에서의 ls에 해당하는 컨테이너 커맨드는 docker ps(또는 docker container ls)이다. docker ps는 현재 실행 중인 컨테이너의 목록을 출력하며, -a 옵션과 함께 사용할 경우 정지 상태의 컨테이너를 모두 포함한 목록을 출력한다.
docker ps -a
컨테이너의 상세 정보 또는 컨테이너가 잘 정지되었는지 확인하기 위한 목적으로 주로 사용된다. docker ps 커맨드를 실행하면, CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMES 항목이 나타난다. 각 항목이 의미하는 바는 아래와 같다.
① CONTAINER ID
② IMAGE
③ COMMAND
④ CREATED
⑤ STATUS
⑥ PORTS
⑦ NAMES
실제로 컨테이너의 생성부터 삭제까지의 과정을 실습해보기로 하자. 생성할 컨테이너는 아파치 컨테이너이며, 아파치 이미지의 이름은 httpd이다. 이제 아파치 이미지를 사용해 apa000ex1이라는 이름의 컨테이너를 생성 및 실행해보자.
① docker run 커맨드
docker run --name apa000ex1 -d httpd
② docker ps 커맨드
docker ps // 컨테이너가 정상적으로 실행 중인지 확인
③ docker stop 커맨드
docker stop apa000ex1 // 컨테이너 종료
docker ps // 컨테이너가 정상적으로 종료되었는지 확인
④ docker ps -a 커맨드
docker ps -a // 중지된 컨테이너의 존재 여부를 확인
⑤ docker rm 커맨드
docker rm apa000ex1 // 컨테이너 삭제
docker ps -a // 컨테이너의 존재 여부를 확인