問題タブ [docker-networking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - Docker ネットワーク: マルチホスト ネットワークでコンテナーを名前でアドレス指定できない
実行中の 3 つのホストには swarm クラスターがあり、docker 1.11 を使用してその上にオーバーレイ ネットワークがあります
マシンは boot2docker と virtualbox を使用して起動されます:
ネットワークは次のように作成されます。
次に、compose を使用してコンテナーのデプロイを行います。
af-repo に ssh し、レポート コンテナーで /bin/bash を実行すると、同じホストにある docker_registry コンテナーに ping を実行できます。
しかし、別のホストにある jenkins コンテナーに ping を実行しようとすると、次のようになります。
私がそれを調べると、ネットワークは正しいようです:
af-jenkins から実行する場合も出力は同じです。したがって、私が理解していることから、同じホスト上の別のコンテナーからコンテナーに ping を実行する能力は、それらのコンテナー用に自動的に作成されたブリッジ ネットワークに由来するため、私のネットワークはまったく機能していません。
どんな助けでも大歓迎です:)
編集:これはクラスター情報の出力です
docker - docker 制限付きネットワークの作成方法
制限されたネットワーク環境 (インターネットに対して 1 つのポートが開いている) で docker コンテナーを実行しようとしています。ホストシステムにいくつかの iptables ルールを追加できることを読みましたが、他のコンテナーに影響を与えたくありません。そこで、iptables ルールを配置する別のブリッジ「docker1」を作成しました。しかし、docker でブリッジとして使用することはできません。
--bridge を試してみましたが、場所などを変更しましたが、何も機能しませんでしたが、インターネットでこの使用法を見ました。私は何が間違っていて、どうすればそれを回避できますか? すべてのコンテナーではなく、コンテナーのグループに対してのみ、インターネットに NAT 接続されたポートが 1 つだけのネットワークを作成するにはどうすればよいですか?
前もって感謝します!
nginx - docker コンテナーの IP は再起動時に変更されますか?
私はドッカーを初めて使用し、単一のサーバーですべてのアプリケーションをドッカー化しています。これまでのところ、すべてがうまく機能しています。しかし、私は一つのことを理解していません。私はすべてにdocker-composeを使用しています(プロジェクト用のdockerfileはまだ作成していません)。docker ports
-composeにはこの属性があります。このようなものを書くと:
0.0.0.0:8085 でリッスンします。これは、外部からサーバーにアクセスできることを意味します。いくつかの議論とグーグル検索の後、docker bridge ネットワークで IP アドレスを取得し、ポート マッピングを簡単に実行できることがわかりました。
これは 172.17.0.1:8085 でのみリッスンします。これは、内部でのみリッスンし、nginx がトラフィックを必要なポートにプロキシするため、優れています。(例proxy_pass http://172.17.0.1:8085
)。docker について詳しく知り、それらがどのように機能するかを理解した後、これらのコンテナーにはすべて独自の IP アドレスがあり、ポートはそれらのアドレスにのみ公開されていることに気付きました。たとえば、私の「Web」コンテナーの 1 つに 172.17.0.10 の IPv4 アドレスがあり、ポート 80 が公開されています。これらのコンテナーのいずれかで実行docker inspect
すると、コンテナーの IP アドレスが表示されます。
ここで、これらの IP アドレスを nginx で使用したいと考えています。の代わりにproxy_pass http://172.17.0.1:8085
、やりたいhttp://172.17.0.10
。個人的にはとても洗練されたインターフェイスだと思いますが、気になる点が 1 つあります。マシンを再起動するとどうなりますか? すべてのコンテナは、何らかの順序で開始されます。5 つの Web コンテナーがあり、それらがランダムな順序で開始される場合、これらのコンテナーの IP が同じであることを確認できますか? それとも変わるのでしょうか?ports
nginx で使用するために docker-compose で常に使用する必要がありますか? はいの場合、同じ IP を持つ異なるポートではなく、コンテナーごとに異なる IP を使用するにはどうすればよいですか? 別の docker ネットワーク インターフェイス (サブネット 172.17.1.0 としましょう) を作成し、そのインターフェイスから別の IP を公開された「パブリック」ポートに割り当てても問題ありませんか? これは基本的172.17.1.1:80:80
に 1 つのコンテナで使用することを意味し、172.17.1.2:80:80
別などで
docker - ダウンタイムなしで swarm クラスター内の docker ネットワークを更新する
Out ネットワークは構成ファイルでデフォルト設定で定義されており、しばらくするとサブネット 10.0.2.0/24 のオーバーレイ ネットワークが作成されることに気付きました。最終的に、IP が不足し始めました。
ここで、サブネットを /20 などに変更します。新しいネットワークを作成してすべてのコンテナにアタッチする必要があると思いますが、それにはすべてのコンテナを再作成する必要があり、ダウンタイムが発生します。
これを行うための他のアプローチはありますか?
java - Mac ホストは Docker コンテナーのポート転送を好まない
初めて Docker を試しており、Spring Boot Web アプリを Docker コンテナー内で実行しようとしています。アプリ (自己完結型の jar にパッケージ化) を構築し、それを Docker イメージに追加しています (これが必要です)。
私のSSCCEはGitHubのこのBootup リポジトリにあります。この README には、私が見ているものを再現するためのすべての手順が含まれています。しかし、基本的に:
- Web アプリを jar にビルドします
docker build -t bootup .
成功する実行- 以下の出力からわかるように、実行する
docker run -it -p 9200:9200 -d --name bootup bootup
とコンテナが正常に起動するように見えますdocker ps
- ただし、ブラウザを
http://localhost:9200
に向けると、何も表示されません
docker ps
出力:
Web アプリは、Java のデフォルトの 8080ではなく、ポート 9200 で実行するように構成されています。../gradlew clean build && java -jar build/libs/bootup.jar
私の知る限り、ホスト上でポートをブロックするファイアウォールは実行されていません (私は Mac 10.11.5 を使用しており、System Preferences >> Security & Privacy >> Firewall
オフになっていることが確認されています)。
誰かが私が間違っているところを見つけることができますか?
アップデート:
を実行し、curl
ホストで:netstat
lsof
そしてdocker exec
、コンテナに入れ、別のを実行しましたnetstat
:
写真付きで更新:
私のブラウザ(Chrome)が指しているhttp://localhost:9200
写真:
ソース コードの画像http://localhost:9200
:
のページを検査している Chrome デベロッパー ツールの画像http://localhost:9200
:
Network
Chrome デベロッパー ツールのタブの画像:
ここで一体何が起こっているのですか?!?!? 情報源によると、ブラウザーはDockerland からこんにちは、こんにちは! をレンダリングするはずです。メッセージは問題ありません。実際のブラウザ ページによると、ネットワーク エラーが発生しているようです。そして、Chrome 開発者ツールによると、私のアプリは、私のアプリから遠く離れていない、あらゆる種類の HTML/CSS/JS コンテンツを返しています(ソース コードをチェックして、自分の目で確かめてください)!!!
postgresql - Docker 上の PostgreSQL 永続ストレージを最新の Docker ストレージのみに移行する
の出現で
ストレージのみのコンテナーの場合、dockerfile を使用しない小さなアプリケーションのマシンで postgres を実行する古い方法をまだ使用しています。
4 つの質問があります。
- データをローカルの永続的なコンテナーに保存する古い方法を最新のボリュームに移行するにはどうすればよいですか?
- 私のやり方はいつも奇抜に思えます:
これを別の方法で行うべきですか?
$ ls -lah $STORAGE_DIR/.. drwx------ 19 999 root 4.0K Aug 28 10:04 pgdata
- 私のネットワークはここで正しく見えますか? これは、docker をホストしているマシンでのみ表示されますか、それとも、wifi ネットワーク上のすべてのマシンにも公開されますか?
- 脆弱なパスワード、標準ポート、デフォルトのユーザー名以外に、たとえばここで、個人的な使用のみを目的としてこれを行う場合に注意すべきセキュリティ上の懸念はありますか?
docker - Docker コンテナでのネットワーク パフォーマンスの低下
OSX Yosemite と VirtualBox で最新の docker/docker-machine を実行しています。ホストからコンテナーで実行されている lein ring サーバーに接続しようとしています。読み込みが遅く、読み込み時間が 1 分を超えています。私の構成です
Docker 1.12.0 Docker マシン 0.8.0 VirtualBox 5.0.24
私の Docker マシン
"ConfigVersion": 3, "Driver": { "IPAddress": "192.168.99.100", "MachineName": "default", "SSHUser": "docker", "SSHPort": 49478, "SSHKeyPath": "/Volumes /NASMAC/VMs/.docker/machine/machines/default/id_rsa", "StorePath": "/Volumes/NASMAC/VMs/.docker/machine", "SwarmMaster": false, "SwarmHost": "tcp:// 0.0.0.0:3376"、"SwarmDiscovery": ""、"VBoxManager": {}、"HostInterfaces": {}、"CPU": 1、"メモリ": 1024、"DiskSize": 20000、"NatNicType": "82540EM"、"Boot2DockerURL": ""、"Boot2DockerImportVM": ""、"HostDNSResolver": false、"HostOnlyCIDR": "192.168.99.1/24"、"HostOnlyNicType": "82540EM"、"HostOnlyPromiscMode": "deny"、"UIType": "headless"、"NoShare": false、"DNSProxy": true、"NoVTXCheck" : false }, "DriverName": "virtualbox", "HostOptions": { "Driver": "", "Memory": 0, "Disk": 0, "EngineOptions": { "ArbitraryFlags": [], "Dns ": null, "GraphDir": "", "Env": [], "Ipv6": false, "InsecureRegistry": [], "Labels": [], "LogLevel": "", "StorageDriver": " "、"SelinuxEnabled": false、"TlsVerify": true、"RegistryMirror": []、"インストール URL":"https://get.docker.com" }, "SwarmOptions": { "IsSwarm": false, "アドレス": "", "ディスカバリー": "", "エージェント": false, "マスター": false, "ホスト": "tcp://0.0 .0.0:3376", "Image": "swarm:latest", "Strategy": "spread", "Heartbeat": 0, "Overcommit": 0, "ArbitraryFlags": [], "ArbitraryJoinFlags": [], "Env": null, "IsExperimental": false }, "AuthOptions": { "CertDir": "/Volumes/NASMAC/VMs/.docker/machine/certs", "CaCertPath": "/Volumes/NASMAC/VMs/ .docker/machine/certs/ca.pem", "CaPrivateKeyPath": "/Volumes/NASMAC/VMs/.docker/machine/certs/ca-key.pem", "CaCertRemotePath": "","ServerCertPath": "/Volumes/NASMAC/VMs/.docker/machine/machines/default/server.pem", "ServerKeyPath": "/Volumes/NASMAC/VMs/.docker/machine/machines/default/server-key .pem"、"ClientKeyPath": "/Volumes/NASMAC/VMs/.docker/machine/certs/key.pem"、"ServerCertRemotePath": ""、"ServerKeyRemotePath": ""、"ClientCertPath": "/Volumes/ NASMAC/VMs/.docker/machine/certs/cert.pem", "ServerCertSANs": [], "StorePath": "/Volumes/NASMAC/VMs/.docker/machine/machines/default" } }, "名前" : "デフォルト" }docker/machine/machines/default/server-key.pem", "ClientKeyPath": "/Volumes/NASMAC/VMs/.docker/machine/certs/key.pem", "ServerCertRemotePath": "", "ServerKeyRemotePath": ""、"ClientCertPath": "/Volumes/NASMAC/VMs/.docker/machine/certs/cert.pem"、"ServerCertSANs": []、"StorePath": "/Volumes/NASMAC/VMs/.docker/machine /machines/default" } }, "名前": "デフォルト" }docker/machine/machines/default/server-key.pem", "ClientKeyPath": "/Volumes/NASMAC/VMs/.docker/machine/certs/key.pem", "ServerCertRemotePath": "", "ServerKeyRemotePath": ""、"ClientCertPath": "/Volumes/NASMAC/VMs/.docker/machine/certs/cert.pem"、"ServerCertSANs": []、"StorePath": "/Volumes/NASMAC/VMs/.docker/machine /machines/default" } }, "名前": "デフォルト" }"StorePath": "/Volumes/NASMAC/VMs/.docker/machine/machines/default" } }, "Name": "default" }"StorePath": "/Volumes/NASMAC/VMs/.docker/machine/machines/default" } }, "Name": "default" }
私のdockerイメージ
{ "ID": "819132073e36a026222ad0da90899a0daf1e735ce0f8623202740b355556c136", "作成済み": "2016-08-28T23:35:03.957961657Z", "パス": "/bin/bash", "引数": "with "lein" ", "dev", "do", "start-dev" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled ": false、"Dead": false、"Pid": 3586、"ExitCode": 0、"Error": ""、"StartedAt": "2016-08-28T23:35:04.365339872Z"、"FinishedAt": "0001-01-01T00:00:00Z" }, "画像": "sha256:618b57a0e5d07030a3f869607928f5e167b53a6f250f76f88325799888dcac94","ResolvConfPath": "/var/lib/docker/containers/819132073e36a026222ad0da90899a0daf1e735ce0f8623202740b355556c136/resolv.conf", "HostnamePath": "/var/lib/docker/containers/819132073e36a026222ad0da90899a0daf1e735ce0f8623202740b355556c136/hostname", "HostsPath": "/var/lib/ docker/containers/819132073e36a026222ad0da90899a0daf1e735ce0f8623202740b355556c136/hosts", "LogPath": "/var/lib/docker/containers/819132073e36a026222ad0da90899a0daf1e735ce0f8623202740b355556c136/819132073e36a026222ad0da90899a0daf1e735ce0f8623202740b355556c136-json.log", "Name": "/lonely_ritchie", "RestartCount": 0, "Driver" : "aufs", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile":"", "ExecIDs": null, "HostConfig": { "Binds": [ "/Users/kendallarneaud/Documents/Git/ngc-race-along.docker:/data" ], "ContainerIDFile": "", " LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": { "3000/tcp": [ { "HostIp": "", "HostPort": "" } ], "9000/tcp": [ { "HostIp": "", "HostPort": "" } ] }, "RestartPolicy": { "Name": "no", "MaximumRetryCount" : 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "CapAdd": null, "CapDrop": null, "Dns": []、"DnsOptions": []、"DnsSearch": []、"ExtraHosts": null、"GroupAdd": null、"IpcMode": ""、"Cgroup": ""、"リンク": null、"OomScoreAdj": 0、"PidMode": ""、"Privileged": false、"PublishAllPorts": true、"ReadonlyRootfs": false、"SecurityOpt": null、"UTSMode": ""、"UsernsMode": ""、"ShmSize": 67108864、"ランタイム": "runc"、"ConsoleSize": [ 0, 0 ]、"分離": ""、"CpuShares": 0、"メモリ": 0、"CgroupParent": ""、"BlkioWeight": 0、"BlkioWeightDevice": null、"BlkioDeviceReadBps": null、"BlkioDeviceWriteBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteIOps": null, "CpuPeriod": 0, "CpuQuota": 0, "CpusetCpus": "", "CpusetMems": "", "デバイス": [], "DiskQuota": 0、"KernelMemory": 0、"MemoryReservation": 0、"MemorySwap": 0、"MemorySwappiness": -1、"OomKillDisable": false、"PidsLimit": 0、"Ulimits": null、" CpuCount": 0, "CpuPercent": 0, "IOMaximumIOps": 0, "IOMaximumBandwidth": 0 }, "GraphDriver": { "Name": "aufs", "Data": null }, "Mounts": [ { "ソース": "/Users/kendallarneaud/Documents/Git/ngc-race-along.docker", "Destination": "/data", "Mode": "", "RW": true, "Propagation": "rprivate" } ], "Config": { "Hostname": "819132073e36", "Domainname": "" , "User": "", "AttachStdin": true, "AttachStdout": true, "AttachStderr": true, "ExposedPorts": { "3000/tcp": {}, "9000/tcp": {} }, "Tty": true, "OpenStdin": true, "StdinOnce": true, "Env": [ "no_proxy=*.local, 169.254/16", "PATH=/usr/local/sbin:/usr/local/ bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOME=/root", "JAVA_HOME=/usr/lib/jvm/java-7-oracle", "LEIN_ROOT=true", " LANG=C.UTF-8", "PYTHON_VERSION=2.7.9" ],"Cmd": [ "/bin/bash", "lein", "with-profile", "dev", "do", "start-dev" ], "Image": "rand/docker-clojurescript:latest" , "Volumes": null, "WorkingDir": "/data", "Entrypoint": null, "OnBuild": null, "Labels": {} }, "NetworkSettings": { "Bridge": "", "SandboxID ": "8b5479b9b22a6d653509c99f9b291593ca7664339666cf40bee55044f3c1d778"、"HairpinMode": false、"LinkLocalIPv6Address": ""、"LinkLocalIPv6PrefixLen": 0、"ポート": { "3000/tcp": [{ "HostIp0.Port "0". ": "32773" } ]、"9000/tcp": [ { "HostIp": "0.0.0.0"、"HostPort": "32772" } ] }、"SandboxKey": "/var/run/docker/netns/8b5479b9b22a"、"SecondaryIPAddresses": null、"SecondaryIPv6Addresses": null、"EndpointID": "d4164a411f5ca1992eb724c4cd5cb2f013a1eb909bfff84f27dfff9d3" , "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress" : "02:42:ac:11:00:02", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "fb82d366a9a2ad010bda7cdf4e6cb33f083a678756cfdfed01f90d3d2c317dfa" 、"EndpointID": "d4164a411f5ca1992eb724c4cd5cb2f013a1eb909b6d3e5f395d07df84ff34f2"、"ゲートウェイ": "172.17.0.1"、"IPAddress": "172.17.0.2"、"IPPrefixLen": 16、"IPv6GatewayPrefixLen": "6"、"GlobalIPv"、"6" ": 0, "MacAddress": "02:42:ac:11:00:02" } } }
この状況をデバッグするために他にどのような情報を提出すればよいかわかりません。パフォーマンスを向上させるためにできることはありますか?
docker - Docker がホスト名を解決しない
同じマシンで実行されているコンテナーのホスト名 (または IP アドレス) を知る必要があります。ここですでにコメントしたように(ただし、まだ回答はありません)、私はdocker-compose
. ドキュメントによると、composeは、同じdocker-compose.yml
ファイルで定義されたすべてのコンテナーのホスト名エントリを自動的に作成します。
サービスの各コンテナは、デフォルト ネットワークに参加し、そのネットワーク上の他のコンテナから到達可能であり、コンテナ名と同じホスト名で発見可能です。
しかし、経由でホスト エントリが表示されませんdocker exec -it my_container tail -20 /etc/hosts
。コンテナにも追加しようとしましlinks
たが、何も変わりませんでした。
docker - Docker コンテナ ネットワーク
docker 1.9 のリリースにより、コンテナ ネットワークが登場しました。使用方法は理解できますが、なぜそれらを使用する必要があるのか わかりません。コンテナ ネットワークを使用する利点は何ですか?