도커 데몬은 원격 REST API. 이 API는 클라이언트가 엔진과 통신하는 데 사용됩니다. 이 API는 다음과 같은 다른 도구에서도 호출할 수 있습니다. curl 또는 Chrome 포스트맨 REST 클라이언트.
OSX 매버릭스에서 Docker 머신을 사용하여 Docker 데몬을 생성하는 경우 이 API가 작동하도록 하는 것이 약간 까다롭습니다. 이 블로그에서는 Mac OS X에서 생성된 Docker 머신에서 Docker Remote API를 활성화하는 방법을 설명합니다.
컬을 사용하여 보안 도커 포트에 연결하기 명령은 다음과 같이 지정합니다:
1 2 3 4 |
$ curl https://$HOST:2376/images/json --cert ~/.도커/cert.pem --키 ~/.도커/키.pem --cacert ~/.도커/ca.pem |
이 명령에는 몇 가지 문제가 있습니다:
- 이 명령은 각 머신에 대한 인증서가 다음 위치에 저장되므로 Docker 머신에서는 작동하지 않습니다.
.docker/machine/machines/
디렉터리로 이동합니다. - 이 명령이 해당 경로와 일치하도록 수정된 경우에도 마찬가지입니다:
1curl https://192.168.99.100:2376/images/json --cert $DOCKER_CERT_PATH/cert.pem --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem
여전히 다음과 같은 오류가 발생합니다:
1curl: (58) SSL: Can't load 의 인증서 "/사용자/아룽업타/.도커/기계/기계/카우치베이스/인증서.pem" 그리고 그것의 비공개 키: OSStatus -25299
이 문제의 원인은 OSX 매버릭스 사용자를 위한 컬 유틸리티 업데이트. 요약하자면, 새 버전의 CURL은 OpenSSL API 대신 Apple의 보안 전송 API를 사용합니다. 즉, 인증서는 P12 형식이어야 합니다.
이 문제를 해결해 봅시다!
- 컴퓨터의 인증서가 저장된 디렉터리로 이동합니다. 제 경우에는
.docker/machine/machines/couchbase
디렉터리로 이동합니다. - 생성
*.p12
형식의 인증서입니다:
12345678openssl pkcs12 -내보내기-inkey 키.pem-in cert.pem-CAfile ca.pem-체인-이름 클라이언트-측면-out cert.p12-비밀번호 통과:mypass - 이제 REST API를 다음과 같이 호출합니다:
1curl https://192.168.99.100:2376/images/json --cert $DOCKER_CERT_PATH/cert.p12 --pass mypass --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem
알림,--인증
이제 생성된 p12 인증서를 가리키고 인증서 암호는 sing으로 지정됩니다.--pass
.그러면 결과가 다음과 같이 반환됩니다:
1[{"Id":"sha256:d38beda529d3274636d6cb1c9000afe4f00fbdcfa544140d6cc0f5d7f5b8434a","ParentId":"","RepoTags":["arungupta/couchbase:최신"],"RepoDigests":null,"생성됨":1450330075,"Size":374824677,"VirtualSize":374824677,"레이블":{}}]이제야 이해가 되네요!
- 시작해보겠습니다. 카우치베이스 서버 로 설정합니다:
12~ > 도커 실행 -d -p 8091-8093:8091-8093 -p 11210:11210 arungupta/카우치베이스42d1414883affd0fbb272cb1378c2f6b5118acf3ed5cb60cbecdc42f95602e3e
그리고 이 컨테이너에 대한 자세한 내용을 보려면 다른 REST API를 호출하세요:
12~ > curl https://192.168.99.100:2376/containers/json --cert $DOCKER_CERT_PATH/cert2.p12 --pass mypass --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem[{"Id":"42d1414883affd0fbb272cb1378c2f6b5118acf3ed5cb60cbecdc42f95602e3e","이름":["/감탄_파이크"],"이미지":"arungupta/couchbase","ImageID":"sha256:d38beda529d3274636d6cb1c9000afe4f00fbdcfa544140d6cc0f5d7f5b8434a","명령":"/entrypoint.sh /opt/couchbase/configure-cluster.sh","생성됨":1454850194,"포트":[{"IP":"0.0.0.0","PrivatePort":8092,"PublicPort":8092,"유형":"tcp"},{"PrivatePort":11207,"유형":"tcp"},{"IP":"0.0.0.0","PrivatePort":11210,"PublicPort":11210,"유형":"tcp"},{"PrivatePort":18092,"유형":"tcp"},{"PrivatePort":18091,"유형":"tcp"},{"IP":"0.0.0.0","PrivatePort":8093,"PublicPort":8093,"유형":"tcp"},{"IP":"0.0.0.0","PrivatePort":8091,"PublicPort":8091,"유형":"tcp"},{"PrivatePort":11211,"유형":"tcp"}],"레이블":{},"상태":"위로 2초","HostConfig":{"네트워크 모드":"default"},"네트워크 설정":{"네트워크":{"bridge":{"IPAMConfig":null,"링크":null,"별칭":null,"NetworkID":"","엔드포인트ID":"6feaf4c1c70feaf0ba240ce55fb58ce83ebb84c8098bef9171998e84f607fa0b","게이트웨이":"172.17.0.1","IP주소":"172.17.0.2","IPPrefixLen":16,"IPv6게이트웨이":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:AC:11:00:02"}}}}]
다음 내용을 읽어보세요. 전체 API 그리고 지금 미쳐버리세요!
원래 게시된 위치는: Mac OS X의 도커 머신에서 도커 원격 API 활성화하기