티스토리 뷰

반응형

프로젝트하는데, 원격으로  Docker container를 제어해야할 일이 생겼다. 이것저것 알아보는데 애를 먹어서, 내 블로그에 정리해본다. 

 

 

 

순서

1. Ubuntu에 Docker 설치하기 

2. 테스트용 Docker Image 만들기

3. Dockerd tcp로 설정하기

4. Docker Engine API 를 이용하여, 요청하기

   4.1. container list 가져오기

   4.2. container 생성하기

   4.3. container 실행하기

   4.4. container 중지하기

   4.5. container 삭제하기

 

 

본 글에서는 순서 3., 4. 에 대해서 정리하고자 한다. 

 

 

 

 

3. Dockerd tcp로 설정하기 

https://docs.docker.com/get-started/overview/

 

Docker overview

 

docs.docker.com

 

Docker 에는 Docker client와 Docker deamon 이 있다. (Docker는 client-server 아키텍처로 구성되어 있다.)

 

Docker client(docker) : Docker deamon 에 서비스를 요청하며, REST API, UNIX socket, network interface를 이용하여, 통신한다.

Docker deamon(dockerd) : image, container, network, volume과 같은 Docker object들을 관리하고 Docker client로 부터 들어오는 요청을 수행하는 역할을 한다.  또한 다른 Docker deamon과 통신도 할 수 있다.

 

 

Docker Engine API 요청을 받기 위해 Docker deamon은 Socket 방식의 3가지 타입을 가진다. (unix, tcp, fd)

여기서 원격으로 dockerd 에 Docker Engine API 요청을 하고싶다면, tcp를 활성화 시켜야 한다.

 

[ tcp 활성화 방법 ]

https://docs.docker.com/engine/reference/commandline/dockerd/

 

dockerd

 

docs.docker.com

- 각자 원하는 IP, PORT를 설정하면 된다.

※ docker에서는 기본적으로 2375, deamon와 암호화된 통신에서는 2376을 이용한다.

$sudo dockerd -H tcp://127.0.0.1:2375

 

Tip. 이렇게 -H 옵션을 이용하여, IP, PORT를 설정하면, REST API로 docker deamon에 요청하지 않고, 동일한 터미널에서 docker 를 이용해 command 를 요청할 경우, 매번 -H 127.0.0.1:2375 를 붙여야 한다. 매번 붙이기 귀찮을 경우 해당 옵션을 환경 변수에 지정할 수 있다.

아래는 .bashrc 파일 하단에 export DOCKER_HOST="tcp://127.0.0.1:2375 를 추가하는 내용이다.

추가했다면, source ~/.bashrc 를 통해 변경사항을 적용한다.

$vi ~/.bashrc


//bashrc 파일 하단에 export DOCKER_HOST = "tcp://127.0.0.1:2375" 추가

...

export DOCKER_HOST="tcp://127.0.0.1:2375"

 

 

 

4. Docker Engine API 를 이용하여, 요청하기

dockerd 를 tcp 통신으로 설정하여 실행시켰다면, 이제 Docker Engine API 문서를 확인하여, 필요한 요청을 수행하면 된다. Docker Engine API는  wget, curl, HTTP 통신 라이브러리 등 HTTP client에 의한 접근이 가능한 RESTful API 이다.

https://docs.docker.com/engine/api/ 

 

Develop with Docker Engine API

 

docs.docker.com

Docker Engine API 는 위 링크( Develop with Docker Engine API )에서 Docker 버전에 맞는 API 문서를 선택하여 확인하면 된다. 

해당 문서에서 원하는 요청을 확인하려면, 왼쪽 사이드바에서 찾으면 된다.

다음은 Container 관련 API 요청 몇 가지를 예시로 작성한 것이다. 정확한 사용법과 각종 옵션 등은 API 문서를 확인하자.

 

[ container list 가져오기 ]

 

[ container 생성하기 ]

- container 를 생성하기 위해서는 Image가 있어야 하며, Request Body에 어떤 Image로 container를 생성할 것인지 작성하면된다. maintest:0.1 은 테스트 용으로 만든 image 파일이며, query parameter 의 name 은 생성할 container 의 명을 지정한다. option이며, 없으면 Docker에서 알아서 생성해준다.

 

※ Image 외에도 body에 추가하는 속성이 많다. Nullable 표시가 없으면 필수적으로 넣어야 하는 속성이 아닌가... 생각되는데, Nullable 표시가 없는 속성들이 body에 추가되지 않아도 생성 잘 된다....

혼란스럽지만... 어쨌든 container는 반드시 image가 있어야 하니 image만 잘 추가하면 된다.

 

 

[ container 실행하기 ]

 

[ container 중지하기 ]

query parameter의 t 는 container를 중지하기까지 대기하는 시간을 나타낸다. ( 초 단위 ) 

아래는 3초 이후에 중지하라는 것이다.

 

[ container 삭제하기 ]

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함