티스토리 뷰
Overview
Background
What is socat?
Settings
$ brew install socat
$ socat -d TCP-LISTEN:2376,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock
$ curl http://127.0.0.1:2376/version
{
- Version: "17.03.1-ce",
- ApiVersion: "1.27",
- MinAPIVersion: "1.12",
- GitCommit: "c6d412e",
- GoVersion: "go1.7.5",
- Os: "linux",
- Arch: "amd64",
- KernelVersion: "4.9.13-moby",
- Experimental: true,
- BuildTime: "2017-03-24T00:00:50.070226199+00:00"
}
위와 같이 curl을 호출했을 때, json 응답이 온다면 Setting에 성공하신 겁니다~!
Docker Engine API
1) Docker에서 관리하는 Container들의 정보
http://127.0.0.1:2376/containers/json
https://docs.docker.com/engine/api/v1.27/#operation/ContainerList
2) Docker에서 발생하는 Event들의 정보
http://127.0.0.1:2376/events
https://docs.docker.com/engine/api/v1.27/#operation/SystemEvents
3) 특정 Container 내부에 실행되고 있는 프로세스 목록
http://127.0.0.1:2376/containers/{containerId}/top
https://docs.docker.com/engine/api/v1.27/#operation/ContainerTop
{containerId}는 $ docker ps -a 에서 노출되는 ID들 중 유니크하다면 줄여서 사용하셔도 됩니다. 예를 들어, container Id가 axxxx와 bxxxx가 있다면, a만 containerId에 넣어도 된다는 것을 의미합니다. 충돌이 나지 않는다면, Docker에서는 적절한 Container를 매핑하여 정보를 넘겨줍니다.
4) 특정 Container의 리소스 모니터링
5) Container Operation
5-1. Create a container
5-2. Start a container
5-3. Stop a container
5-4. Restart a container
5-5. Kill a container
좀 더 자세한 API들의 목록을 확인하고 싶으시면 아래의 링크를 참조해주세요.
https://docs.docker.com/engine/api/v1.27/
Reference
https://forums.docker.com/t/remote-api-with-docker-for-mac-beta/15639
https://docs.docker.com/docker-for-mac/faqs/#how-do-i-connect-to-the-remote-docker-engine-api
부족한 부분이 있거나 설명이 난해했던 부분에 대해서는 언제든지 Comment 부탁드립니다.
감사합니다.