[Docker 부터 Kubernetes 까지] [#2] Docker 기본기

Docker 설치하기

Docker는 기본적으로 리눅스 환경에서 네이티브 하게 실행됩니다. Docker 초기에는 다른 운영체제에서 Docker를 실행할 경우 리눅스 가상화를 거치게 됐는데 이제 맥의 경우에는 네이티브 하게 지원이 됩니다. (윈도즈로는 개발을 안 해 잘 모르겠네요). 여기 이 링크로 가셔서 해당되는 운영체제용 Docker를 설치하시면 됩니다.

Docker 설치하기

Docker 설치가 완료되었는지 확인하기 위해 터미널 또는 커맨드를 띄워서 아래 커맨드를 실행해주세요


docker --version

잘 설치가 되셨을 경우 아래와 비슷한 결과가 뜨게 됩니다. 다른 값이 뜰 경우 (버전 및 빌드 제외) 댓글에 문의를 남겨주세요.


도커 커맨드 결과


Hello World컨테이너 실행해보기

Docker를 사용해 컨테이너 애플리케이션을 실행하려면 세 가지 과정을 거쳐야 합니다.

  1. 이미지 풀해오기 (캐시 또는 remote repository 에서)
  2. 이미지 빌드하기
  3. 이미지 실행하기 아래 커맨드를 실행하면 위 세 가지 과정을 한 번에 진행하실 수 있습니다.

docker run hello-world

도커 커맨드 실행 결과


위와 같은 결과가 나오면 성공하신 겁니다. 나타난 결괏값은 잠시 분석해보도록 하겠습니다.


Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
...

로컬에 캐싱 되어있는 hello-world라는 컨테이너 이미지를 찾지 못했으니 library/hello-world라는 레포지토리에서 hello-world Docker 이미지를 다운로드한다는 이야기입니다. 방금 실행하신 커맨드를 다시 한번 실행해보시면 위에 보이는 이미지를 풀링 해오는 과정이 스킵 됩니다. 첫 번째 커맨드를 실행했을 때 이미 로컬 환경에 이미지를 캐싱 해두었기 때문에 새로 이미지를 다운로드하지 않아도 실행이 가능하기 때문이죠.

Nginx 이미지 실행하고 추가설정 해보기

Hello World 이미지를 사용하며 기본적인 Docker 이미지 실행 과정을 알아봤으니 이제 nginx 이미지로 여러 docker run 옵션에 대해 알아보겠습니다.

다큐멘테이션 보기

nginx 이미지를 hello-world 이미지처럼 커맨드를 사용해 실행해보겠습니다.


docker run --name tutorial-nginx -p 8080:80 nginx

위 커맨드를 약간 분석해보면 name 플래그는 실행하게 될 Docker 이미지의 이름을 지정할 때 사용됩니다. -p 플래그는 Docker 컨테이너 내부의 포트와 연결할 로컬 기기의 포트를 지정할 때 사용됩니다. Docker 이미지를 빌드 할 시 노출할 포트를 지정할 수 있는데 로컬 환경에서 컨테이너 접속을 해야 할 경우 컨테이너 내부의 포트와 해당 포트와 연결할 로컬 환경 포트를 지정해줘야 합니다. 기본 nginx 이미지는 컨테이너 내부에서 80번 포트를 노출하기 때문에 로컬의 8080포트를 컨테이너의 80번 포트와 매핑해주었습니다. 마지막 nginx 부분은 당연히 nginx 이미지를 실행하라는 뜻입니다.

커맨드를 실행하신 후 http://localhost:8080/ 을 접속하시면 아래와 같이 nginx 가 8080번 포트에 실행된 것을 볼 수 있으실 겁니다.


nginx 결과


여기까지만 오셔도 Docker 가 얼마나 위대한 툴인지 느끼실 수 있으실 겁니다. Nginx 관련 설치 또는 환경설정을 전혀 하지 않고 (물론 포트는 매핑해줬지만) 수십 초 안에 nginx를 로컬 환경에서 실행할 수 있었습니다.

다음 회에는 커스텀 이미지를 빌드 하는 방법에 대해 알아보도록 하겠습니다.

©Code Factory All Rights Reserved