Docker 설치 및 기본 명령어

변현섭·2023년 12월 18일
0

도커란 무엇인가

목록 보기
3/8
post-thumbnail
post-custom-banner

이번 포스팅에서는 Docker를 설치하는 방법에 대해 알아보기로 합시다. 윈도우용 도커 데스크톱 설치만 다루는 점 양해바랍니다.

1. 윈도우용 도커 데스크톱 설치하기

① 제어판 > 프로그램 > 프로그램 및 기능 > Windows 기능 켜기/끄기 버튼을 클릭한다.

② Linux용 Windows 하위 시스템, 가상 머신 플랫폼에 체크하고 확인 버튼을 클릭한다.

  • 체크한 기능을 활성화하려면 컴퓨터를 다시 시작해야 한다.

③ 아래의 URL에 접속하여 리눅스 커널을 다운로드 받는다.

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  • 다운로드 받은 파일을 실행하여 리눅스 커널을 업데이트할 수 있다.

④ 이번에는 아래의 URL에 접속하여 윈도우용 도커 데스크톱을 다운로드 받는다.

https://docs.docker.com/desktop/install/windows-install/
  • Docker Desktop for Windows 버튼을 클릭하여 다운로드 받을 수 있다.

⑤ 다운로드 받은 파일을 실행하고, Configuration 화면에서 모든 항목에 체크한다음 OK 버튼을 클릭한다.

⑥ 설치가 완료되면, Close and log out 버튼을 클릭해 윈도우에 다시 로그인한다.

  • 컴퓨터가 재부팅된다.

⑦ 바탕화면에 Docker Desktop이 추가된 것을 확인할 수 있다.

2. Docker Desktop 기본 설정 확인하기

① Docker Desktop을 실행하고 Task Tray에 Docker 아이콘이 잘 나타나는지 확인한다.

② 좌측 메뉴에 Constainers와 Images 탭이 있는 것을 확인할 수 있다.

  • Containers 탭에서 실행 중인 컨테이너의 목록을 확인할 수 있다.
  • Images 탭에서 다운로드 받은 도커 이미지 목록을 확인할 수 있다.

③ 화면 좌하단에 초록색 바탕으로 running이라고 적혀있으면 도커가 정상적으로 실행 중인 것이다.

  • 초록색 바탕이 아니거나 running이라고 적혀있지 않으면, 중지 상태인 것이다.

④ 설정 아이콘을 클릭한 후 General 탭에서 Use the WSL 2 based engine이 체크되어 있는지 확인한다.

  • 이는 도커 엔진이 WSL2 위에서 동작하고 있는지 확인하기 위한 것이다.
  • 해당 설정을 비활성화할 경우, 도커 엔진은 Hyper-V에서 동작하게 된다.

※ WSL2와 Hyper-V
Hyper-V는 Microsoft 사의 Windows 가상화 플랫폼으로, 가상 머신을 만들고 실행할 수 있는 환경을 제공한다. 원래 도커 데스크톱은 윈도우 10 프로 이상의 버전에서만 사용 가능한데, 이는 Hyper-V가 프로 이상의 버전에만 포함되어 있기 때문이다.
그러다가 나중에 윈도우 업데이트에서 WSL2(Windows Subsytem for Linux 2)가 추가되면서, 윈도우 10 홈 에디션에서도 도커 데스크톱을 사용할 수 있게 된 것이다. 따라서, 윈도우 10 홈 에디션을 사용하는 경우 도커 엔진이 WSL2 위에서 동작하고 있는지 확인해야 한다.

⑤ 도커 엔진을 종료하고 싶다면, Task Tray에서 Quit Docker Desktop 버튼을 클릭하면 된다.

3. 컨테이너 사용 명령어의 기본 형태

컨테이너를 다루는 모든 명령은 docker로 시작한다. docker 명령어의 기본적인 형태는 아래와 같다.

docker 커맨드 (옵션) 대상 (인자)

각각이 무엇을 의미하는지 하나하나 살펴보기로 하자.

① 커맨드

  • '무엇을', '어떻게' 할 것인지 지정하는 부분이다.
  • 이 때, '무엇을' 부분을 가리켜 상위 커맨드, '어떻게' 부분을 가리켜 하위 커맨드라고 한다.
  • 예를 들어 '컨테이너를' '실행'하고 싶다면, container run이 커맨드가 된다.
  • run이나 start와 같이 몇몇 커맨드는 예외적으로 container를 붙이지 않고도 실행할 수 있다.

② 옵션

  • -이나 -- 기호와 함께 사용된다.
  • 옵션 뒤에 전달할 값을 입력하여 값을 전달할 수도 있다.
--name chrome
  • - 기호를 사용하는 옵션은 한번에 모아 작성할 수 있다. 예를 들어 -d, -i, -t 옵션을 합쳐 -dit로 쓰는 것이 가능하다.

③ 대상

  • 구체적인 이름을 지정하는 데에 사용된다.
container start chrome // 이름이 chrome인 이미지의 컨테이너를 실행한다.

④ 인자

  • 대상에 전달할 값을 지정한다.
  • -이나 -- 기호와 함께 사용된다.
  • 자주 사용되지는 않는다.
--mode=1 // 모드 1로 실행한다.

4. 컨테이너의 생성, 실행, 정지, 삭제

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는 컨테이너 내부에 터미널로 접속한다는 의미이다. 물론, 실행되자마자 종료되는 컨테이너에는 이러한 옵션을 사용할 필요가 없다.

2) 컨테이너 정지

컨테이너를 실행하는 방법을 배웠으니, 이제 정지하고 폐기하는 방법도 배워야 한다. 실행 중인 컨테이너를 바로 삭제하기 위해선, 먼저 컨테이너를 정지시켜야 한다. 컨테이너를 정지시킬 때에는 docker stop(또는 docker container stop) 명령을 사용한다. 이 커맨드에 별도의 옵션이나 인자를 지정하는 일은 거의 없다.

docker stop 컨테이너 이름

3) 컨테이너 삭제

반드시 정지된 컨테이너에 대해 삭제를 수행해야 한다. 컨테이너를 삭제할 때에는 docker rm(또는 docker container rm) 명령을 사용하며, 이 명령도 옵션이나 인자를 지정할 일이 거의 없다.

docker rm 컨테이너 이름

5. 컨테이너 목록 출력하기

리눅스에서의 ls에 해당하는 컨테이너 커맨드는 docker ps(또는 docker container ls)이다. docker ps는 현재 실행 중인 컨테이너의 목록을 출력하며, -a 옵션과 함께 사용할 경우 정지 상태의 컨테이너를 모두 포함한 목록을 출력한다.

docker ps -a

컨테이너의 상세 정보 또는 컨테이너가 잘 정지되었는지 확인하기 위한 목적으로 주로 사용된다. docker ps 커맨드를 실행하면, CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMES 항목이 나타난다. 각 항목이 의미하는 바는 아래와 같다.

① CONTAINER ID

  • 컨테이너 식별자이다.
  • 무작위 문자열이 할당된다.
  • 원래는 64글자이지만, 앞의 12글자만으로도 식별자의 역할을 수행하는 데에 무리가 없기 때문에 12글자만 출력한다.

② IMAGE

  • 컨테이너를 만들 때 사용한 이미지의 이름이다.

③ COMMAND

  • 컨테이너 실행 시에 실행하도록 설정된 프로그램의 이름이다.
  • 별로 중요하지 않다.

④ CREATED

  • 컨테이너 생성 후 경과된 시간을 나타낸다.

⑤ STATUS

  • 컨테이너의 현재 상태를 나타낸다.
  • 실행 중이라면 Up, 종료된 상태라면 Exited를 출력한다.

⑥ PORTS

  • 컨테이너에 할당된 포트 번호이다.
  • 호스트 포트 번호 -> 컨테이너 포트 번호 형식으로 출력된다. (포트 설정을 하지 않은 경우에는 ->가 나타나나지 않는다.)

⑦ NAMES

  • 컨테이너의 이름이다.

6. 명령어 실습

실제로 컨테이너의 생성부터 삭제까지의 과정을 실습해보기로 하자. 생성할 컨테이너는 아파치 컨테이너이며, 아파치 이미지의 이름은 httpd이다. 이제 아파치 이미지를 사용해 apa000ex1이라는 이름의 컨테이너를 생성 및 실행해보자.

① docker run 커맨드

docker run --name apa000ex1 -d httpd

  • --name: apa000ex1이라는 이름의 컨테이너를 생성한다.
  • httpd: 버전을 지정하지 않았으므로, 가장 최신 버전을 사용한다.
  • Unable to find image: 해당 이미지가 현재 컴퓨터에 존재하지 않음을 의미한다.
  • 맨 아래에 나오는 무작위 문자열이 CONTAINER ID에 해당한다.

② docker ps 커맨드

docker ps // 컨테이너가 정상적으로 실행 중인지 확인

  • STATUS 항목의 값이 Up인 것으로 보아, 컨테이너가 잘 실행되고 있음을 확인할 수 있다.

③ docker stop 커맨드

docker stop apa000ex1 // 컨테이너 종료
docker ps // 컨테이너가 정상적으로 종료되었는지 확인

④ docker ps -a 커맨드

docker ps -a // 중지된 컨테이너의 존재 여부를 확인

  • STATUS 항목의 값이 Exited인 것으로 보아 컨테이너가 존재는 하지만, 종료된 상태임을 알 수 있다.

⑤ docker rm 커맨드

docker rm apa000ex1 // 컨테이너 삭제
docker ps -a // 컨테이너의 존재 여부를 확인

  • 삭제된 컨테이너는 ps -a 커맨드로도 확인할 수 없다.
profile
Java Spring, Android Kotlin, Node.js, ML/DL 개발을 공부하는 인하대학교 정보통신공학과 학생입니다.
post-custom-banner

0개의 댓글