web-dev-qa-db-ja.com

Docker REST API URLを見つけるにはどうすればよいですか?

Jenkins用のDockerビルドステッププラグインをインストールしました。

ドキュメントは私に言っています:

Name      : Choose a name for this Docker cloud provider
Docker URL: The URL to use to access your Docker server API (e.g: http://172.16.42.43:4243)

REST API(ホストにDockerをインストールしています)へのURLを見つけるにはどうすればよいですか?

27
DenCowboy

Linuxを使用していて、ローカルマシンのDocker APIに接続する必要がある場合、そのURLはおそらくunix:///var/run/docker.sock、ドキュメントに記載されているように:Docker Engine SDKとAPIを使用して開発

デフォルトでは、Dockerデーモンはunix:///var/run/docker.sockおよびクライアントは、デーモンと対話するためにルートアクセス権を持っている必要があります。システムにdockerという名前のグループが存在する場合、dockerはソケットの所有権をグループに適用します。

これは、 JetBrains IDE からDockerに接続する場合に役立ちます。

35

2つのアプローチがあります。

DockerにアクセスするにはどうすればよいですかREST APIをリモートで使用しますか?

警告:このセットアップ後、Docker REST= APIポート(この場合は1111)はリモートアクセスに公開されます。

Ubuntu 16.04(Xenial Xerus)で有効にした方法を次に示します。

  1. Dockerサービスファイルを編集します(アップグレード時に置き換えられるため、/lib/systemd/system/docker.serviceを直接編集しないようにすることをお勧めします)
Sudo systemctl edit docker.service
  1. 次のコンテンツを追加します
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:1111

Docker 18以降では、コンテンツが少し異なります。

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:1111
  1. 変更したファイルを保存します。ここでは、ポート1111を使用しましたが、任意の空きポートを使用できます。

  2. Dockerサービスが変更された構成を通知していることを確認します。

systemctl daemon-reload
  1. Dockerサービスを再起動します。
Sudo service docker restart
  1. テスト
curl http://localhost:1111/version
  1. 結果を見る
{"Version":"17.05.0-ce","ApiVersion":"1.29","MinAPIVersion":"1.12","GitCommit":"89658be","GoVersion":"go1.7.5","Os":"linux","Arch":"AMD64","KernelVersion":"4.15.0-20-generic","BuildTime":"2017-05-04T22:10:54.638119411+00:00"}

これでREST APIを使用できます。

DockerにアクセスするにはどうすればよいですかREST APIをソケット経由で(localhostから)?

内部Unixソケットをこのように接続します。

カールを使用する

curl --unix-socket /var/run/docker.sock http:/localhost/version

そして、ここにPHPを使用してそれを行う方法があります

$fs = fsockopen('/var/run/docker.sock');

fwrite($fs, "GET / HTTP/1.1\r\nHOST: http:/images/json\r\n\r\n");

while (!feof($fs)) {
    print fread($fs,256);
}

PHP 7では、 curl_setoptCURLOPT_UNIX_SOCKET_PATHオプションを使用できます。

16
aimme

ホストによって異なりますが、/etc/default/docker または /var/lib/boot2docker/profileDocker Machine boot2docker VMを使用するホストの場合)。

たとえば、dockerデーモンが使用するポートが表示されます。

DOCKER_OPTS="-H unix:// -H tcp://0.0.0.0:2375"
                                        ^^^^^

次に、DockerデーモンをホストしているマシンのIPアドレスを取得します。 (Docker Machineで作成されたホストでは、docker-machine ip <yourmachine>。)

使用するURLは、IPアドレスとポートの組み合わせです。

6
VonC

Windowsを使用している場合:

npipe:////./pipe/docker_engine

ソース: https://docs.docker.com/docker-for-windows/faqs/#how-do-i-connect-to-the-remote-docker-engine-api

0
Leonard AB