1

先週、私はdocker remote api仕事をするのに苦労しました。VMで実行されているため、それ以来VMを再起動していません。今日、ようやく VM を再起動しましたが、動作しなくなりました (docker と docker-compose は正常に動作していますが、動作していませんdocker remote api)。私の docker init ファイルは次のようになります/etc/init/docker.conf

description     "Docker daemon"

start on filesystem and started lxc-net
stop on runlevel [!2345]

respawn

script
    /usr/bin/docker -H tcp://0.0.0.0:4243 -d
end script

# description "Docker daemon"

# start on (filesystem and net-device-up IFACE!=lo)
# stop on runlevel [!2345]
# limit nofile 524288 1048576
# limit nproc 524288 1048576

respawn

kill timeout 20
.....
.....

前回ここに示した設定を行ったとき

開いているnmapか調べてみました。port 4243

ubuntu@ubuntu:~$ nmap 0.0.0.0 -p-

Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-12 23:49 CEST
Nmap scan report for 0.0.0.0
Host is up (0.000046s latency).
Not shown: 65531 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
43978/tcp open  unknown
44672/tcp open  unknown
60366/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 1.11 seconds

ご覧のとおり、ポート 4232 は開いていません。

私が実行すると:

ubuntu@ubuntu:~$ echo -e "GET /images/json HTTP/1.0\r\n" | nc -U
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46bCDdhjklnrStUuvZz] [-I length] [-i interval] [-O length]
      [-P proxy_username] [-p source_port] [-q seconds] [-s source]
      [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol]
      [-x proxy_address[:port]] [destination] [port]

私もこれを実行します:

ubuntu@ubuntu:~$ sudo docker -H=tcp://0.0.0.0:4243 -d
flag provided but not defined: -d
See 'docker --help'.

コンピューターを何度も再起動し、多くのことを試してみましたが、成功しませんでした。すでに docker という名前のグループがあり、ユーザーは次の場所にいます:

ubuntu@ubuntu:~$ groups $USER
ubuntu : ubuntu adm cdrom sudo dip plugdev lpadmin sambashare docker

何が悪いのか教えてください。

4

2 に答える 2

3

起動スクリプトに無効なコマンドが含まれています:

/usr/bin/docker -H tcp://0.0.0.0:4243 -d

代わりに、次のようなものが必要です。

/usr/bin/docker daemon -H tcp://0.0.0.0:4243

1.12 の時点で、これは次のようになりました (ただし、docker daemon引き続き機能します)。

/usr/bin/dockerd -H tcp://0.0.0.0:4243

これは、ドッカー ホストにパスワードなしでリモート ルート アクセスを提供するポートを開くことに注意してください。

マシンを乗っ取りたい人は誰でも実行docker run -v /:/target -H your.ip:4243 busybox /bin/shして、ファイルシステムが /target にマウントされたルート シェルを取得できます。ホストを保護する場合は、このガイドに従って TLS 証明書を設定してください

于 2016-10-13T02:01:36.707 に答える
0

私はついにwww.ivankrizsan.seを見つけました。この男(または女の子)に感謝します;)。この設定は、ubuntu 16.04 で機能します。方法は次のとおりです。

  • このファイルを編集し、行を 次のよう/lib/systemd/system/docker.serviceに置き換えますExecStart=/usr/bin/dockerd -H fd://ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:4243
  • ファイルを保存する
  • で再起動します:sudo service docker restart
  • でテスト: curl http://localhost:4243/version
  • 結果: 次のように表示されます。

    {"Version":"1.11.0","ApiVersion":"1.23","GitCommit":"4dc5990","GoVersion" "go1.5.4","Os":"linux","Arch":"amd64","KernelVersion":"4.4.0-22-generic","BuildTime":"2016-04-13T18:38:59.968579007+00:00"}

注意 : 0.0.0.0 はセキュリティに適していないことに注意してください。セキュリティを強化するには、127.0.0.1 を使用する必要があります。

于 2016-10-12T23:09:05.990 に答える