このメモは、英語の記事で山を読む時間がほとんどない(または英語を知らない)人を対象としていますが、コンソールとは何か、自分でdockerをインストールする方法についてはほとんど知識がありません。
怠け者のための記事の簡単な要約
以下はルーターの設定または
編集ですが、そのような詳細のためにはhabracatの下でクロールする必要があります。
docker pull crosbymichael/skydns docker pull crosbymichael/skydock docker run -d -v /var/run/docker.sock:/docker.sock --name skydock crosbymichael/skydock -ttl 30 -environment dev -s /docker.sock -domain docker -name skydns docker run -d -p 172.17.42.1:53:53/udp --name skydns crosbymichael/skydns -nameserver 8.8.8.8:53 -domain docker
以下はルーターの設定または
/usr/lib/systemd/system/docker.service
編集ですが、そのような詳細のためにはhabracatの下でクロールする必要があります。
SkyDNSおよびSkyDockとは
SkyDNSを使用すると、小規模のDNSサーバーを上げることができます。 次に 、 SkyDockは、ソケット接続を介してdockerデーモンと通信することにより、 Dockerの腸から取得したデータに依存して、SkyDNSのゾーンを管理します。
SkyDNS + SkyDockバンドルを使用すると、ホストで実行されているコンテナーのIPアドレスを見つけることを心配する必要がなくなります。 実際には、サービスの発見です。
したがって、mongodbを使用して複数のコンテナーを実行し、レプリカなどの収集を練習できます。
docker run -d --name repl1 mongo --smallfiles docker run -d --name repl2 mongo --smallfiles docker run -d --name repl3 mongo --smallfiles
モンガを設定するジャングルには入りませんが、SkyDockからはどのようなパンが手に入りますか:
repl2.mongo.dev.docker
という名前の特定のコンテナーのIPを取得する
repl2.mongo.dev.docker
dig mongo.dev.docker
して、mongoイメージに基づいて実行されているすべてのコンテナーのIPリストを取得する
dig mongo.dev.docker
-コマンド
dig dev.docker
して、特定のホストのすべてのコンテナーのIPアドレスのリストを取得する
dig dev.docker
設置
すべてのことについて約5分かかります(これは、もちろん、強力で強力なネットワークへの接続速度に依存します)。
希望する人は、著者自身がSkyDockについて語り、この農場全体をリアルタイムで立ち上げるビデオを見ることができます。
最初に、画像のレジストリからSkyDNSとSkyDockの画像を取得する必要があります。 この画像の利点は、 Michael Crosbyという名前の親切な人(彼のgithubアカウント 、 YouTubeチャンネル 、そして当然、彼のdockerレジストリハブ )によって用意されました。
docker pull crosbymichael/skydns docker pull crosbymichael/skydock
ダウンロードが成功したら、次のコマンドを実行する必要があります。
docker run -d -p 172.17.42.1:53:53/udp --name skydns crosbymichael/skydns -nameserver 8.8.8.8:53 -domain docker
docker run -d -v /var/run/docker.sock:/docker.sock --name skydock crosbymichael/skydock -ttl 30 -environment dev -s /docker.sock -domain docker -name skydns
最初はskydnsという名前のコンテナでSkyDNSを起動し、
2番目のコマンドは、同じくコンテナ内でSkyDockを起動します。
-名前は
skydock
によって与えられます。
-ソケット
/var/run/docker.sock
コンテナー内に
/var/run/docker.sock
れ、Dockerデーモンと通信します(使用しているシステムによっては、このパラメーターを修正する必要がある場合があります)。
-30秒のTTLが設定されています(私が理解しているように、これはSkyDNSの情報を更新する頻度です)。
-環境にはdevという名前が付けられます(作成者が複数のホストで使用するためにSkyDockを完成させる計画です。したがって、本番と開発を区別することが可能です)。
-s
単に通信用のソケットパスを示します。
docker
ドメイン名。
-SkyDNSを使用したコンテナ名-突然
skydns
!
実際にインストールは完了し、SkyDNSとSkyDockはすでに機能しています。
ネットワーク設定
そのため、今では、すべての来訪者に対して、独自の小さくて温かいチューブ(下線) DNSサービスがあるという情報を何らかの形で伝える必要があります。
ここにはいくつかのオプションがあります。
コンテナが同じホストに住んでいる間に互いについて学習するには、コマンドで
--dns
パラメータを指定して
--dns
を起動するだけで十分です。 systemdユニットの例は、以下のネタバレに記載されています。
変更されたsystemd-unit docker.service
$ cat /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] ExecStart=/usr/bin/docker -d --bip=172.17.42.1/16 --dns=172.17.42.1 -H fd:// LimitNOFILE=1048576 LimitNPROC=1048576 [Install] WantedBy=multi-user.target
私の状況では、自宅に小さなサーバーを備えたロカルカがあり、そこでコンテナが回転し、ラップトップで作業しています。 そのため、ラップトップが新しいDNSサーバーを認識し、最初に使用することを確認する必要があります。
これを行うために、私はルーターにいます:
-宛先アドレス172.0.0.0/8で着信するすべてのトラフィックをサーバーに転送する追加のルーティングルールを構成しました。
-DHCP設定では、最初にアドレスを設定するのは172.17.42.1で、次にプロバイダーdnsサービスです。
そして出来上がり! すべてが最高の状態で機能します!
お団子
このコマンドを使用すると、LANのデバイスが関心を持っているドメイン名を確認できます。
たとえば、携帯電話に関心のある豊富な広告ドメイン...
$ docker logs skydns 2>&1 | grep 'Received DNS' | awk -F\" '{print $2}' | sort | uniq
このコマンドを使用すると、LANのデバイスが関心を持っているドメイン名を確認できます。
たとえば、携帯電話に関心のある豊富な広告ドメイン...
しかし、リブートする必要がある場合はどうでしょうか?
ホストを再起動するには、次を実行します。
docker stop skydock docker stop skydns
実際の再起動自体、そして:
docker start skydns docker start skydock
美人!
シムでは、Dockerで楽しい娯楽をお過ごしください! :)
UPD。 ちなみに、コメントにドッカーを使用してライフハックを残したり、彼のためにあらゆる種類の興味深いpribludsの名前を指摘したりする場合は、非常に感謝します。 さて、またはあなた自身がピッキングに興味を持っていたことを教えてください、多分誰かも興味がありますか?
UPD2。 skydockとskydnsのsystemdのユニットを同封します。
skydns.service
[Unit] Description=SkyDNS container Requires=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a skydns ExecStop=/usr/bin/docker stop -t 2 skydns [Install] WantedBy=multi-user.target
skydock.service
[Unit] Description=SkyDock container After=docker.service Requires=skydns.service [Service] Restart=always ExecStart=/usr/bin/docker start -a skydock ExecStop=/usr/bin/docker stop -t 2 skydock [Install] WantedBy=multi-user.target