본문 바로가기

카테고리 없음

Docker : Part 6

Docker,Remote, API,client,  library, python,host, 원격, 리모트, 도커, git : today Key

 

 Docker의 6번째 포스팅입니다. 이번 포스팅에서는 Docker를 Remote에서 제어할 수 있도록 제공되는 Remote API client libraries에 대해서 다뤄봅니다. 보안적인 측면보다는 최대한 우선 쉽게 접근하는 걸 목표로 잡고 있기 때문에 이 점은 감안해서 봐주시면 감사하겠습니다. ^^

이런 식으로 Docker를 Client에서도 다룰 수 있다는 것 정도로 보면 어떨까 싶습니다! ^^

물론 이러한 API를 활용하여 Docker Host를 관리하도록 한다면 Docker의 명령을 직접 입력하지 않고 Application을 클릭하는 것만으로도

docker를 관리할 수 있을 것입니다.


 

Docker Remote API Client libraries

    Docker에서는 Client가 Docker Host를 제어하기 위한 다양한 언어로 구성된 API Library에 대해 있음  

    Docker를 작성한 Go를 비롯한 다양한 언어에 대한 Library가 Git을 통해서 제공되기 때문에 원하는 언어를 선택 가능. 

    Client는 Host를 제어하는 역할이기 때문에 별도의 Docker Engine를 설치할 필요가 없으며,

       Windows,Mac 등에서도 직접 사용 가능.

    본 포스팅에서는 Windows기반의 PC에서 Python Library를 사용하여 Docker Host를 제어

   • Docker API LINK : https://docs.docker.com/reference/api/remote_api_client_libraries/

   

  

 

 

Docker Remote API Client libraries - Python

    Python용 Library를 설치

          - pip install docker-py  [ Docker Python Library가 있는 Git 페이지에도 나와있음 ]

          - https://github.com/docker/docker-py

 

 

    Python Shell에서 Docker Host에 접속 및 정보 확인

          - docker.client 라이브러리를 Load

          - Docker Host에 접속

              ※ Docker Host에서 기본 Unix Sock 접속이 아닌 TCP로 접속할 수 있도록 설정 필요.

          - info() 메서드를 사용하면 현재 Docker Host에 대한 정보를 확인할 수 있음.

 

 

   Docker Image 정보 확인

          - images() 메서드를 통해서 Docker Host에 있는 이미지 정보를 출력

          - docker images 역할

 

 

   Docker Image 정보 확인 변형

          - 위에 표기된 대로, 모든 정보가 다시 결과 값으로 리턴될 때의 사용자가 보기에는 조금 어렵게 리턴이 되게 되기 때문에 결과 값을

            아래와 같이 가공이 필요로 함.

          - originList() 메서드는 간략하게 결과 값을 가공하기 위해 만든 별도의 메서드

 

 

 

   Docker Image 정보 확인 변형2

      - originList() 메서드는 처음이 결과 값보다는 보기가 편하지만 그래도 여전히 보기가 쉽지 않고 필요한 정보 뿐만 아니라,

        필요 없을 수 있는 모든 정보들에 대한 결과를 보여주기 때문에 아래와 같이 필요한 정보에 대해서만 간략하게 보여줄 수 있도록

        메서드를 작성하는 것이 좋음.

      - ImageList() 메서드는 Image ID와 Repo, Tags, Virtual Size 에 대한 값만을 보여주도록 가공하도록 작성한 별도의 메서드.

 

 

   Docker Container 생성

      - create_container() 메서드를 사용하여 Container를 생성

      - start() 메서드에 매개변수로 생성된 Container 객체를 포함하여, Container를 Running 상태로 만듬.

      - start() 메서드에 의해 생성된 Container가 정상적으로 동작하는지 확인하기 위해서, 해당 Container에서 동작 중인 웹서비스 호출

 

 

      - containers() 메서드를 사용하면, 현재 동작 중인 Container의 정보를 볼 수 있음.

           : docker ps 역할

 

      - 아래의 실행 결과 값은 마찬가지로 originList() 메서드를 사용하여 전체 정보를 보기 쉽도록 가공.