MSA 공부 <4-1 편> | Container 생성해보기
들어가기 전
이번 단계에서는 컨테이너를 실행하는 명령어와 명령어의 옵션들을 살펴보며 앞으로 컨테이너를 다룰 때 어떻게 해야 하는지 포스팅 하겠으며 해당 챕터는 아래와 같이 총 3단계로 나누어 진행하겠습니다.
- 컨테이너 적응 (현재 단계)
- alpine(리눅스 경량화 버전) 컨테이너를 이용한 웹서버
- 이미지 빌드 및 배포 진행
도커파일(이미지 빌드 소스)에 대해 먼저 하지 않는 것에 대해서는 dockerfile은 docker의 대략적인 흐름을 알아가는 것과는 거리가 있다고 생각하고 있기 때문입니다. 전반적인 내용을 알아야 dockerfile의 옵션을 잘 응용할 수 있기에 지금 당장은 이러한 순서로 진행하게 되었습니다.
1. 사용할 주요 명령어
Docker ( container ) run [ option ] image [ command ] [arg… ]
컨테이너를 생성 및 실행하며 생성할때 image가 docker registry에 없다면 docker hub에 요청하여 이미지를 받아와 생성합니다.
사용되는 option 목록
- -p (publish) {host port number}:{container port number}/<tcp | udp>
호스트(dockerd)와 공유하는 포트 번호 - -d (detch)
백그라운드에서 컨테이너를 실행
2. 컨테이너 생성하기
서비스 단위 컨테이너 생성해보기
사전 준비된 웹사이트 이미지를 이용하여 컨테이너를 생성하여 외부에서 접근할 수 있는 웹사이트를 생성해 보겠습니다. 아래의 명령어를 입력하여 컨테이너를 생성할 수 있습니다.
docker run -d -p 8080:80 docker/welcome-to-docker
성공적으로 생성했다면 localhost:8080로 접속해서 결과를 볼 수 있습니다!
접속했을 때 "congratulations" 라는 문구가 뜨는 것을 볼 수 있다면 성공적으로 컨테이너를 생성 및 실행한 것입니다.
2-1. 순식간에 지나간 컨테이너 생성 과정들
"docker run"이 거치는 과정들
Docker run은 다른 명령어인 docker pull, docker create, docker start과 동일한 과정을 거칩니다. 각각 명령어는 아래와 같은 기능을 포함하고 있습니다.
- Docker pull ( image가 registry에 없을 시 사용됨 )
docker hub에서 이미지를 다운로드하여 registry에 저장 - Docker create
Registry에 있는 이미지를 토대로 컨테이너 생성 - Docker start
생성되었으나 멈춰있는 컨테이너를 실행
다시 말하자면 1번 과정은 저장소에 image가 존재할 시 건너뛰어 진행되며 위의 과정을 한번에 포함하는 명령어를 docker run이라 할 수 있습니다.
단순해 보이는 명령어지만 _
3번 이외에 해당 명령어들은 이미지 다운로드에 지연이 발생하거나 컨테이너를 사전 생성해야 할때와 같은 상황에 따라 필요할 수도 있으니 알아두시길 바랍니다.
앞으로 도커 컨테이너를 활용할 순간들
컨테이너화 플랫폼
도커는 일명 컨테이너리제이션 플랫폼이라 불립니다. 다시말해 컨테이너를 매체로 한 배포 체계화 플랫폼이라 할 수 있습니다. 도커 안에서 작동하는 서비스 단위인 컨테이너는 알다시피 개발, 테스트, 배포와 같은 단계를 모두 진행하기에 컨테이너를 다루기위해 위해 사용되는 명령어와 옵션은 목적에 따라 다릅니다. 그러기에 개발과 관련된 포스팅과 배포에 관련된 포스팅에 사용되는 명령어의 차이를 유의하는 것을 권합니다.
다음 포스팅에서는 리눅스 경량화 버전인 alpine을 사용하여 간단한 nodejs 웹 서버를 만들고 이미지로 빌드하는 과정까지 진행해보겠습니다.