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を見つけるにはどうすればよいですか?
Linuxを使用していて、ローカルマシンのDocker APIに接続する必要がある場合、そのURLはおそらくunix:///var/run/docker.sock
、ドキュメントに記載されているように:Docker Engine SDKとAPIを使用して開発
デフォルトでは、Dockerデーモンは
unix:///var/run/docker.sock
およびクライアントは、デーモンと対話するためにルートアクセス権を持っている必要があります。システムにdockerという名前のグループが存在する場合、dockerはソケットの所有権をグループに適用します。
これは、 JetBrains IDE からDockerに接続する場合に役立ちます。
2つのアプローチがあります。
DockerにアクセスするにはどうすればよいですかREST APIをリモートで使用しますか?
警告:このセットアップ後、Docker REST= APIポート(この場合は
1111
)はリモートアクセスに公開されます。
Ubuntu 16.04(Xenial Xerus)で有効にした方法を次に示します。
/lib/systemd/system/docker.service
を直接編集しないようにすることをお勧めします)Sudo systemctl edit docker.service
[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
変更したファイルを保存します。ここでは、ポート1111
を使用しましたが、任意の空きポートを使用できます。
Dockerサービスが変更された構成を通知していることを確認します。
systemctl daemon-reload
Sudo service docker restart
curl http://localhost:1111/version
{"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_setopt とCURLOPT_UNIX_SOCKET_PATHオプションを使用できます。
ホストによって異なりますが、/etc/default/docker
または /var/lib/boot2docker/profile
( Docker 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アドレスとポートの組み合わせです。
Windowsを使用している場合:
npipe:////./pipe/docker_engine
ソース: https://docs.docker.com/docker-for-windows/faqs/#how-do-i-connect-to-the-remote-docker-engine-api