2016-10-05 7 views
18

ドッカー作成用のコンテナから外部ネットワークにアクセスできません。私は外部のIPアドレスまたはインターネットIPアドレス(ping www.google.com)に到達するために管理し、簡単なdocker run -it nginx bashを使用してドッカー作成サービス内のインターネットがありません

version: '2' 
services: 
    nginx: 
     image: nginx 

は、次のドッキングウィンドウ・コンファイルを考えてみましょう。

一方、私がドッカーを作成してコンテナに接続すると、外部IPアドレス/ DNSにアクセスできません。

ドッカ情報:

Containers: 0 
Running: 0 
Paused: 0 
Stopped: 0 
Images: 1 
Server Version: 1.12.1 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 7 
Dirperm1 Supported: true 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
Volume: local 
Network: bridge null host overlay 
Swarm: inactive 
Runtimes: runc 
Default Runtime: runc 
Security Options: apparmor seccomp 
Kernel Version: 4.4.0-38-generic 
Operating System: Ubuntu 16.04.1 LTS 
OSType: linux 
Architecture: x86_64 
CPUs: 2 
Total Memory: 3.859 GiB 
Name: *** 
ID: **** 
Docker Root Dir: /var/lib/docker 
Debug Mode (client): false 
Debug Mode (server): false 
Registry: https://index.docker.io/v1/ 
WARNING: No swap limit support 
WARNING: bridge-nf-call-iptables is disabled 
WARNING: bridge-nf-call-ip6tables is disabled 
Insecure Registries: 
127.0.0.0/8 

ドッキングウィンドウ-構成1.8.1、878cff1

daemon.jsonファイル構築:

{ 
    "iptables" : false, 
    "dns" : ["8.8.8.8","8.8.4.4"] 
} 
+0

'docker exec -it ping google.com'を使用していますか? それはうまくいくはずです。 – Alkaline

+0

これはまさに私がやったことです。 –

+1

あなたはネットワークを調べましたか? _dockerネットワークの検査は何ですか? 「ブリッジ」がデフォルトのネットワークであると仮定します。 – aholbreich

答えて

-2

ドッカーコンテナをデフォルトでインターネットにアクセスする能力を持っています。ここ は、私が先週の問題を解決する方法である:docker container can only access internet with net host

それともホストモードでコンテナましょう:

version: '2' 
service: 
    nginx: 
    image: nginx 
    network_mode: host 

をしかし@peedeeコメントで指摘したように、このソリューションはホスト間のネットワークの分離を失っただろうコンテナ。

+0

これを行うと、ホストとコンテナの間のすべての分離が失われます。 – peedee

+0

@peedeeは​​い、私はこれを認めなければなりません。 [faas](get-faas.com)プロジェクトの作成ファイルをチェックしたところ、オーバーレイネットワークを使用していて、インターネットにアクセスできるはずです。しかし私は私のコンピュータでこれを行うことができませんでした。 –

+2

Dockerのドキュメントから: "注:--network =" host "はコンテナにDバスなどのローカルシステムサービスへのフルアクセスを提供するため、安全ではないと考えられています。 – kewne

2

私はそのような問題を抱えていた最後の時間は、私はこのようにそれを解決:

https://github.com/docker/docker/issues/866#issuecomment-19218300

pkill docker 
iptables -t nat -F 
ifconfig docker0 down 
brctl delbr docker0 
docker -d 

をそれがブリッジを再作成するためにドッキングウィンドウを強制し、すべてのネットワークルールに

1

を再初期化します引っ張っている画像nginxには、デフォルトでpingがインストールされていません。したがって、実際に接続をテストするためにpingを使用している場合は、まずそれをインストールする必要があります。

私はそれがインストールされているカスタムDockerfileを作成:

FROM nginx:latest 
RUN apt update && apt -y install iputils-ping 

その後、私はそれをローカルに構築し、mynginxとしてタグ付け。

は、その後、私は、カスタムイメージmynginx使用するdocker-compose.ymlを変更:

version: '2' 
services: 
    nginx: 
    image: mynginx 

を最後に、私はdocker-compose upを発射し、その中にドッキングウィンドウexecをやった、とpingをテストしました。すべてうまくいった。私もdocker run -ti ...してくれました。

あなたの質問にはどのような不具合がありますかdocker runは、docker-compose upによって作成された場合とは異なる動作を持つコンテナを提供することができます。

インターネットアクセスを確認する方法についてもっと明確になると助かります。

関連する問題