도커 컨테이너 사용법



Docker 클라이언트

docker 클라이언트는 매우 간단합니다. docker 명령을 직접 입력하면 Docker 클라이언트의 모든 명령 옵션을 볼 수 있습니다.

php@php:~# docker

docker27.png

docker command --help 명령을 사용하면 지정된 Docker 명령을 사용하는 방법에 대해 자세히 알아볼 수 있습니다.

예를 들어 docker stats 명령의 구체적인 사용법을 확인하고 싶습니다.

php@php:~# docker stats --help

docker28.png


웹 애플리케이션 실행

앞서 실행한 컨테이너는 특별한 용도가 없습니다.

다음으로 docker를 사용하여 웹 애플리케이션을 구축해 보겠습니다.

웹 애플리케이션을 실행하기 위해 Docker 컨테이너에서 Python Flask 애플리케이션을 실행해 보겠습니다.

php@php:~# docker run -d -P training/webapp python app.py

docker29.png

매개변수 설명:

  • -d:컨테이너가 백그라운드에서 실행되도록 합니다.

  • -P:컨테이너 내부에 사용되는 네트워크 포트를 우리가 사용하는 호스트에 매핑하세요.


웹 애플리케이션 컨테이너 보기

실행 중인 컨테이너를 보려면 docker ps를 사용하세요.

php@php:~$ docker ps

docker30.png

여기에 더 많은 포트 정보가 있습니다.

PORTS
0.0.0.0:32769->5000/tcp

Docker는 호스트 포트 32769에 매핑된 포트 5000(기본 Python Flask 포트)을 엽니다.

이때 브라우저를 통해 WEB 애플리케이션에 액세스할 수 있습니다

docker31.png

-p 플래그를 지정하여 지정된 포트를 바인딩할 수도 있습니다.

php@php:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker ps실행 중인 컨테이너 보기

docker32.png

컨테이너 내부의 5000 포트는 로컬 호스트의 5000 포트에 매핑됩니다.


네트워크 포트 바로가기

docker ps 명령을 통해 컨테이너의 포트 매핑을 볼 수 있습니다. Docker는 또 다른 바로가기인 docker port를 사용하여 지정된(ID 또는 이름) 컨테이너의 특정 결정을 확인합니다. . 포트는 호스트의 포트 번호에 매핑됩니다.

위에서 생성한 웹 애플리케이션 컨테이너 ID는 7a38a1ad55c6이고 이름은determined_swanson

Docker 포트 7a38a1ad55c6 또는 docker 포트determined_swanson을 사용하여 컨테이너 포트의 매핑을 볼 수 있습니다

php@php:~$ docker port 7a38a1ad55c6
5000/tcp -> 0.0.0.0:5000
php@php:~$ docker port determined_swanson
5000/tcp -> 0.0.0.0:5000

웹 애플리케이션 로그 보기

docker 로그 [ ID 또는 이름]은 컨테이너 내부의 표준 출력을 볼 수 있습니다.

php@php:~$ docker logs -f 7a38a1ad55c6
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -

-f: dokcer 로그tail -f를 사용하는 것처럼 컨테이너 내부에 표준 출력을 출력합니다.

위에서 애플리케이션이 포트 5000을 사용하고 있음을 확인할 수 있으며 애플리케이션의 액세스 로그를 볼 수 있습니다.


웹 애플리케이션 컨테이너의 프로세스 보기

docker top을 사용하여 컨테이너 내부에서 실행 중인 프로세스를 볼 수도 있습니다.

php@php:~$ docker top determined_swanson

docker33.png


웹 애플리케이션 확인

docker 검사를 사용하여 Docker의 기본 정보 보기 . Docker 컨테이너의 구성 및 상태 정보를 기록하는 JSON 파일을 반환합니다.

php@php:~$ docker inspect determined_swanson
[
    {
        "Id": "7a38a1ad55c6914b360b565819604733db751d86afd2575236a70a2519527361",
        "Created": "2016-05-09T16:20:45.427996598Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            "Status": "running",
......

웹 애플리케이션 컨테이너 중지

php@php:~$ docker stop determined_swanson   
determined_swanson

웹 애플리케이션 컨테이너 다시 시작

docker start 명령을 사용하여 중지된 컨테이너를 시작할 수 있습니다.

php@php:~$ docker start determined_swanson
determined_swanson

docker ps -l 실행 중인 컨테이너 보기

docker34.png

실행 중인 컨테이너, docker restart 명령을 사용하여 다시 시작할 수 있음


웹 애플리케이션 컨테이너 제거

docker rm 명령을 사용하여 삭제할 수 있음 필수 컨테이너

php@php:~$ docker rm determined_swanson  
determined_swanson

컨테이너를 삭제할 때는 컨테이너가 정지된 상태여야 하며 그렇지 않으면 다음 오류가 보고됩니다

php@php:~$ docker rm determined_swanson
Error response from daemon: You cannot remove a running container 7a38a1ad55c6914b360b565819604733db751d86afd2575236a70a2519527361. Stop the container before attempting removal or use -f