Docker remote api - Java 클라이언트 라이브러리
이번 포스팅에선 docker remote api를 java 클라이언트로 접근해보았다.
Docker remote API
클라이언트에서 원격으로 도커 서비스를 제어할 수 있는 API
Java 클라이언트 라이브러리 비교
아래 표 내 3개의 라이브러리는 Docker 공식 문서의 Unofficial libraries 목록을 참고하여 선정
각 라이브러리 관련 정보는 각 라이브러리의 github와 mvnrepository를 참고
각 라이브러리의 취약점은 dependency들의 버전 업데이트로 회피 가능
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
- 설정 적용 전 요청 결과
- 설정 적용 후 요청 결과
라이브러리 사용 예시 (spotify/docker-client)
- 컨테이너 목록 조회
- 도커 이미지 pull
- 컨테이너 환경 설정
- 컨테이너 생성 및 실행
- 컨테이너 중지 및 삭제