2022-08-17,   심건우

이번 포스팅에선 docker remote api를 java 클라이언트로 접근해보았다.

Docker remote API

클라이언트에서 원격으로 도커 서비스를 제어할 수 있는 API

image

이미지 출처

Java 클라이언트 라이브러리 비교

아래 표 내 3개의 라이브러리는 Docker 공식 문서의 Unofficial libraries 목록을 참고하여 선정

각 라이브러리 관련 정보는 각 라이브러리의 github와 mvnrepository를 참고

각 라이브러리의 취약점은 dependency들의 버전 업데이트로 회피 가능

image

Unofficial libraries

A github 링크

A mvnrepository 링크

B github 링크

B mvnrepository 링크

C github 링크

C mvnrepository 링크

Docker remote 환경설정

  • 도커 환경설정을 위해 root로 switch user
su root
  • docker.service 편집
nano /usr/lib/systemd/system/docker.service
  • docker.service 내 ExecStart 속성 아래와 같이 수정 (2375 port는 보안 미적용 port)
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
  • 변경 사항 적용
systemctl daemon-reload
  • docker 재시작
service docker restart
  • 방화벽 외부 접근 가능 port 추가
firewall-cmd --permanent --zone=public --add-port=2375/tcp
  • 변경 사항 적용
firewall-cmd-reload
  • 외부 cmd에서 curl 요청 (컨테이너 목록 중 1개 조회)
curl http://[docker host server ip address]:2375/containers/json?all=1
  • 설정 적용 전 요청 결과

image

  • 설정 적용 후 요청 결과

image

라이브러리 사용 예시 (spotify/docker-client)

예시 출처

  • 컨테이너 목록 조회

image

  • 도커 이미지 pull

image

  • 컨테이너 환경 설정

image

  • 컨테이너 생성 및 실행

image

image

  • 컨테이너 중지 및 삭제

image

image

image

업데이트: