マシンのDockerコンテナーにローカルの別のマシンにアクセスするためのDockerコンテナーをセットアップしました。
コマンドの下にコンテナを作成します。
docker run -it -d --name containerName -h www.myhost.net -v /var/www/html -p 7000:8000 --net mynetwork --ip 172.11.0.10 --privileged myimagename bash
コンテナの詳細を作成した後:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e1e5e9b74b4 myimgaename "bash" 21 minutes ago Up 6 minutes 0.0.0.0:7000->8000/tcp containername
ネットワークの詳細:
"NetworkSettings": {
"Bridge": "",
"SandboxID": "fe357c54c816fff0f9d642037dc9a173be7f7e42a80776d006572f6a1395969e",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"8000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "7000"
}
]
}
mymachine(hostmachine)でdocker ipaddr(172.11.0.10)またはhostname(www.myhost.net)にアクセスすると、機能します
しかし、Portでアクセスすると機能しません:hostmachine ip:192.168.1.1
go to the browser 192.168.1.1:7000 hostmachine and locally connected anoter machine also.
しかし、私の7000ポートはホストマシンでリッスンしています:
# ps aux | grep 7000
root 10437 0.0 0.2 194792 24572 pts/0 Sl+ 12:33 0:00 docker-proxy -proto tcp -Host-ip 0.0.0.0 -Host-port 7000 -container-ip 172.11.0.10 -container-port 8000
root 10941 0.0 0.0 118492 2324 pts/3 R+ 12:44 0:00 grep --color=auto 7000
更新1:
$ docker version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:39:21 2016
OS/Arch: linux/AMD64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:39:21 2016
OS/Arch: linux/AMD64
コンテナを別のマシンにアクセスできない理由を教えてください。この問題を解決する方法
私はこの投稿を見つけましたが、別の問題があり、次のアドバイスが誰かを助けることができると確信しています:
Docker内のappを127.0.0.1アドレスではなく.0.0.にバインドして、Dockerがコンテナー内のアプリに到達できるようにします。
ホストのポート7000
はコンテナーのポート8000
にリダイレクトしていますが、コンテナーのそのポートでリッスンしているものはありますか?
docker run
コマンドは少し奇妙です:-it
は、ターミナルを接続した状態でコンテナをインタラクティブに実行するためのものです。 -d
は、バックグラウンドで分離して実行するためのものです。最後のbash
は、イメージが起動コマンドとして構成するものをすべて上書きするため、ポート8000
でリッスンしているものは何もないと思います。
これで最も簡単なNGINXコンテナを実行してみてください:
docker run -d -p 8081:80 nginx:Alpine
次に、ホームページにアクセスできることを確認します。
curl http://localhost:8081
それが機能している場合は、イメージの実行方法を確認します。
これは、Docker for Macを使用して私に起こっていました。 Dockerアイコンをクリックすると、Restart
がうまくいきました。
部分的な回答:
今、私はこの問題を部分的に解決しましたが、bashなしで試してコンテナを作成し、私のportを3000(-p 3000:80)に変更しました。
コマンドの前:
docker run -it -d --name containerName -h www.myhost.net -v /var/www/html -p 3000:80 --net mynetwork --ip 172.11.0.10 --privileged myimagename bash
コマンドの後:
docker run -it -d --name containerName -h www.myhost.net -v /var/www/html -p 3000:80 --net mynetwork --ip 172.11.0.10 --privileged myimagename
そして、
bin/bashでコンテナを実行します
docker exec -it containerName bin/bash
今、ローカルで接続された別のマシンで動作します。
hostmachineip:3000
I don't know docker have any port restrictions.But This solution works for me.
(docker-composeで管理されたdockerインスタンスのセットで)この問題が発生したとき、docker-composeであるネットワークを削除すると問題が解決することがわかりました。
docker-compose stop
# find the network related to my docker-compose setup
docker network ls
docker network rm NETWORKNAME
# let docker-compose recreate the network:
docker-compose up -d