2017-02-20 10 views
0

Dockerコンテナの自動作成をコマンドラインインターフェイス(CLI)呼び出しからリモートREST API(Docker Engine API)呼び出しに移行する必要がありますが、対応する要求を見つけるための問題がありますボディパラメータ。私のCLI呼び出しは次のとおりです。Dockerコンテナの作成 - CLIからのマッピング

ドッキングウィンドウの実行-d --name itestRun -e LANG = en_UK.UTF-8 -v の/ etc/localtimeの:の/ etc/localtimeの:RO -v /共有:/共有: Z --network =ホスト --addホスト= APPSERVER:127.0.0.1 --addホスト= localhost.localdomainを:127.0.0.1のmytestimage CMD

I'vは、マッピング(-eを発見 - > "Env"、mytestimage - > "Image"、CMD - > "Cmd")、残りのパラメータに問題があります。

答えて

0

ドッカーCLIは、APIを使用してデーモンと通信します。 CLIが要求する簡単な方法は、デバッグモードでデーモンを実行することです。デーモンはデーモンログにAPI呼び出しを記録します。

通常のデーモンをデバッグモードで実行しない場合は、docker-in-dockerを使用できます。これには、Docker Hub(https://hub.docker.com/_/docker/)の公式dockerイメージを使用することができます。

たとえば、Docker 1.13.1デーモンの要求を表示するには、次のように入力します。

まず、ドッカー1.13.1でコンテナを開始します。対話モードでコンテナを起動し、shをメインコマンドとして提供します(これにより、少し簡単になります)。

docker run -it --rm \ 
    -v /var/lib/docker \ 
    --privileged \ 
    --name my-docker \ 
    docker:1.13.1 \ 
    sh 

コンテナ内では、フォアグラウンドでデーモン(dockerd)を起動します。

dockerd --debug --iptables=false 

デーモンが起動しています。デーモンが実行されたら

DEBU[0000] Listener created for HTTP on unix (/var/run/docker.sock) 
INFO[0000] libcontainerd: new containerd process, pid: 16 
DEBU[0000] containerd: read past events     count=0 
... 
... 
DEBU[0001] Registering POST, /networks/prune 
DEBU[0001] Registering DELETE, /networks/{id:.*} 
INFO[0001] API listen on /var/run/docker.sock 

は新しいシェルを開きます。そのシェルでは、ちょうど起動したコンテナに新しいshセッションをdocker execで開きます。上記の例では、コンテナ名としてmy-dockerを使用しているため、コマンドは次のようになります。そのコンテナ内

docker exec -it my-docker sh 

、あなたは今、ドッキングウィンドウのコマンドを実行することができ、あなたが実行する各コマンドのために作られたAPIの呼び出しは、あなたの他のシェルでデーモンの出力に表示されます。

たとえば、実行中です。

docker network create foobar 

デーモンログに次のように表示されます。

DEBU[0304] Calling GET /_ping 
DEBU[0304] Calling POST /v1.26/networks/create 
DEBU[0304] form data: {"Attachable":false,"CheckDuplicate":true,"Driver":"bridge","EnableIPv6":false,"IPAM":{"Config":[],"Driver":"default","Options":{}},"Internal":false,"Labels":{},"Name":"foobar","Options":{}} 

API呼び出しの本体はform data:後に印刷された、とされています。

{ 
    "Attachable": false, 
    "CheckDuplicate": true, 
    "Driver": "bridge", 
    "EnableIPv6": false, 
    "IPAM": { 
    "Config": [], 
    "Driver": "default", 
    "Options": {} 
    }, 
    "Internal": false, 
    "Labels": {}, 
    "Name": "foobar", 
    "Options": {} 
} 
関連する問題