소켓을 통한 cURL 도커
4355 단어 apicurldockerserverclient
이 모든 것이 어떻게 작동하는지 봅시다.
도커 엔진
도커 생태계의 기본 인프라는 docker engine 입니다.
클라이언트/서버 모델(대부분의 유닉스 도구와 매우 유사)을 사용하여 구현되며 gRPC 인터페이스를 통해 해당 모델API을 노출합니다. 이러한 모델에서는 일반적으로 하나의 서버와 많은 클라이언트가 있으며 도커의 경우도 마찬가지입니다.
도커 아키텍처. https://docs.docker.com의 이미지
데몬은 서버 역할을 하고 우리 모두에게 익숙한 CLI는 클라이언트 중 하나 역할을 합니다. 통신의 단일 지점은 일반적으로 유닉스 소켓으로 노출되며 통신은 protocol buffers 형식으로 데이터를 교환하는 gRPC를 통해 수행됩니다.
cURL --유닉스 소켓
cURL은 HTTP 서버와 통신하는 데만 좋은 것이 아니라 UNIX SOCKETS를 통해서도 동일한 작업을 수행할 수 있습니다.
현재 설치된 도커 버전을 원한다고 가정해 보겠습니다. 일반적으로 명령줄에서 다음을 수행합니다.
docker version
API를 사용하여 다음과 같은 작업을 수행합니다.
curl --unix-socket --silent /run/user/1000/docker.sock http://v1.41/version
우리에게 다음을 제공합니다.
{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"20.10.12","Details":{"ApiVersion":"1.41","Arch":"amd64","BuildTime":"2021-12-13T11:46:12.000000000+00:00","Experimental":"false","GitCommit":"459d0df","GoVersion":"go1.16.12","KernelVersion":"5.13.0-28-generic","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"v1.4.12","Details":{"GitCommit":"7b11cfaabd73bb80907dd23182b9347b4245eb5d"}},{"Name":"runc","Version":"1.0.2","Details":{"GitCommit":"v1.0.2-0-g52b36a2d"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"Version":"20.10.12","ApiVersion":"1.41","MinAPIVersion":"1.12","GitCommit":"459d0df","GoVersion":"go1.16.12","Os":"linux","Arch":"amd64","KernelVersion":"5.13.0-28-generic","BuildTime":"2021-12-13T11:46:12.000000000+00:00"}
얼마나 멋진데요?!
한 단계 더 나아가 tcp를 통해 인터넷을 통해 친구에게 로컬 도커 데몬을 노출할 수 있습니다. 다음은 cURL을 사용하지 않고 ncat을 사용하는 빠른 예입니다.
섬기는 사람
ncat -kl -p 2376 -c 'ncat -U /run/user/1000/docker.sock'
고객
curl http://localhost:2376/version | jq
마지막으로 언급할 것은 url ex의 형식입니다.
http://v1.41/version
엄격하지 않습니다. 다음 중 하나라도 동일한 결과를 얻었을 것입니다.http:/foo/version
http://dummy/version
http:/./version
recommendation은 docker가 지원하는 API 버전을 URL의 첫 부분으로 사용하고 실제 명령어는 나중에 온다.
출처:
Reference
이 문제에 관하여(소켓을 통한 cURL 도커), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smac89/curl-to-docker-through-sockets-1mhe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)