Docker、SkyDNS、SkyDock-高速かつ便利

少し前に、私はdockerが何であるかを研究し始めました。 「なぜそれが必要なのか?」、または「fi、これは単なるファッショントレンドです!」、または「誰がそのような生の製品を作っているのか?」という哲学的な喜びには触れません。 SkyDockSkyDNSなどの利点とアメニティを使用して、ドッカーが何であるかをすぐに自宅で感じる方法について簡単なヒントを提供したいだけです。

このメモは、英語の記事で山を読む時間がほとんどない(または英語を知らない)人を対象としていますが、コンソールとは何か、自分でdockerをインストールする方法についてはほとんど知識がありません。

怠け者のための記事の簡単な要約
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を起動し、 人間の声でそれを伝えます:「ホスト532.17.42.1のポート53からポート53に転送」、「あなたに尋ねられている名前がわからない場合はサーバー8.8.8.8を使用」名前付きドッカー。」 もちろん、ドッカードメインゾーンは私が天井から選択したものです。ここでは、ドメインをexample.comとして指定できます。

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サービスです。

そして出来上がり! すべてが最高の状態で機能します!



お団子
 $ 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
      
      






All Articles