Infomation

[도커 엔진(Docker Engine)] User guide (tutorial) - 컨테이너에서 hello world

DarkSoul.Story 2016. 6. 7. 12:20
반응형

 Steps.

 1. Hello World 실행

 2. 대화형 컨테이너(Interactive container) 실행 

 3. 백그라운드에서 실행되는 컨테이너(Daemonized Hello world )

  


[사용할 도커(Docker) 명령어]


- docker run : 컨테이너 실행

- docker ps : 실행되고 있는 컨테이너 확인

- docker logs : 컨테이너의 표준 출력을 보여준다.

- docker stop : 컨테이너 실행 중지

도커(Docker)를 실행 하려먼 기본적으로 아래와 같은 형식으로 명령어를 입력한다.  


# docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

도커(Docker)의 시스템 구성에 따라 docker를 사용하는 일반 사용자 계정으로 사용하게 되면, 명령어를 입력 할 때 sodo를 사용해야 할 필요가 있다. 이 문제를 해결 하려면 유닉스 그룹에 docker를 만들고 사용자를 추가 하면 해결 할 수 있다.


1. Hello World 실행


테스트를 위해 샘플 컨테이너 실행 시켜 보자. 도커(Docker)에서 처음 시작하는 컨테이너 일것이다. 


# docker run ubuntu /bin/echo 'Hello world'


위에서 실행한 명령어는 아래와 같으며, 도커 컨테이너는 사용자가 지정하는 명령에 대해서만 실행된다. 명령 실행이 완료되면 컨테이너는 멈추게된다.


- docker run : 컨테이너 실행 명령어

- ubuntu : ubuntu라는 이미지 실행 여기서는 우분투 운영체제 이미지 예시 이다. 이미지를 지정하면, 도커(Docker)는 도커 호스트에 존재하는 이미지를 먼저 찾는

다. 만약 로컬에 이미지가 존재하지 않는 다면 도커 허브(Docker Hub) 에서 공개된 이미지를 가져온다.

- /bin/echo : 컨테이너 내에서 실행하는 명령이다. 컨테이너가 시작되면 도커(Docker)는 새로운 우분투 환경을 만들고 그 안에서 /bin/echo 명령어를 실행 후 Hello 

World를 출력한다.


2. 대화형 컨테이너(Interactive container) 실행


컨테이너를 실행하기 위해 새로운 명령을 지정해 보자. 


# docker run -t -i ubuntu /bin/bash



위에서 실행한 명령어는 아래와 같다. 


- docker run : 컨테이너 실행 명령어

- ubuntu : ubuntu라는 이미지 실행

- t : 가상 tty 또는 새로운 컨테이너 터미널 할당

- i : 컨테이너의 표준 스트림(STDIN)을 이용하여 대화형 연결을 함

- /bin/bash : bash 쉘을 실행하라는 명령

참고 : tty(TTY)는 전신 타자기라는 오래된 기계에서 유래된 이름인 teletypewriter의 약자로, 리눅스 디바이스 드라이브중에서 콘솔이나 터미널을 의미한다.


위 그림에서도 보듯이 컨테이너가 시작되면 내부 명령 프롬프트를 볼 수 있다. 내부 명령 프롬프트가 실행되면 실행한 컨테이너 내부에 명령어를 실행 할 수 있게 된다.



작업이 완료되면, 대화형 쉘을 종료해야한다. 종료 방법은 exit 명령을 실행 하거나, Ctrl + D를 눌러준다. 컨테이너에서 bash 쉘 프로세스가 종료되면 컨테이너는 중지된다. 



3. 백그라운드에서 실행되는 컨테이너(Daemonized Hello world)


데몬으로 실행되는 컨테이너를 만들어 보자. 


# docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"


위에서 실행한 명령어는 아래와 같다. 


- docker run : 컨테이너 실행 명령어

- ubuntu : ubuntu라는 이미지 실행

- d : 백그라운드에서 컨테이너 실행

마지막으로 실행할 명령인 /bin/sh -c "while true; do echo hello world; sleep 1; done" 지정하였다. 명령이 실행되면 Hello world가 출력되는 것이 아니라 숫자와 알파벳 소문자로 이루어진 긴 문자열을 출력해준다. 이 긴 문자열은 컨테이너 ID로 작업을 할 수 있도록 고유 컨테이너를 식별한다. 여기서 hello world 데몬은 현재 어떤 일을 하고 있는지 궁금점이 생겼다. 가장 먼저 컨테이너가 실행되고 있는지 확인해보자. 


# docker ps


docker ps를 실행하면 daemonized 컨테이너를 확인할 수 있다. docker ps는 몇 가지 유용한 정보를 반환한다. 


- 0a03b68dd61b : 짧게 변형된 컨테이너 ID

- ubuntu : 사용된 이미지

이외에도 현재 사용된 Command, status, 컨테이너 이름등의 정보를 출력해한다. 도커(Docker)는 컨테이너가 실행될 때 자동적으로 이름이 생성된다. docker ps 명령어로 컨테이너가 실행되고 있는 것을 확인하였다. 현재 실행되고 있는 컨테이너가 어떤일을 하고 있는지 궁금해지기 시작했다. docker logs 명령을 이용해서 컨테이너 내부를 확인해보자. 


# docker logs [컨테이너 이름]


docker logs 명령으로 컨테이너 내부를 확인해보면 hello world를 출력하고 있는것을 확인할 수 있다. 이제 실행되고 있는 컨테이너를 중지하자. 


# docker stop [컨테이너 이름]


docker stop 명령으로 컨테이너를 중지 시키면, 컨테이너의 이름을 반환한다. docker ps 명령으로 컨테이너 실행 상태를 확인해보면 아래와 같이 중지된것을 확인할 수 있다.




추가 보기 : Docker 한글 문서 / 영상 모음집(http://documents.docker.co.kr) : 도커에 관련된 한글 문서를 정리한 메타 문서



Reference

Docker : https://www.docker.com/ 


잘못된 부분이 있으면 댓글 남겨주세요. 


반응형