開発におけるDockerの利用


あなたがDockerに熟達していない場合、またはコンテナや仮想マシンのようなトピックはまだビット“ファジー”ですが、問題のDockerでの作業を学ぶが、学習し、コンテナを使用して作業したい、この記事はあなたのためです.
数週間前、私は記事を書きました、そこで、私は容器の紹介をして、容器が解決する問題を説明しました.

生産利用
最も人気のあるコンテナの使用方法は、アプリケーションがランタイムと必要なすべての依存関係を含むイメージにアプリケーションをパックアップできるためです.
そのようなプロセスは、アプリケーションを分離して展開し、それがサーバーのagnosticになるのを助けます.
コンテナfollow a standard .彼らはどこでも均一に走るでしょう.

開発用途
しかし、一部の人々は容器を擁護して、彼らを開発においても彼らを利用します.
つの方法を行うには、アプリケーションのイメージを生産で使用してダウンロードしてコンテナをローカルに実行されます.
それは簡単にバグを複製するのに役立ちますので、かなりクールなので、コンテナは、AWSでリモートサーバーまたはローカルマシンで実行しているかどうか気にしない.ランタイム、依存関係、およびアプリケーション自体:生産と全く同じです.
いくつかの非常に特定のバグを複製しようとしていない場合は、局所的にbloated画像をダウンロードする必要はありません.

Dockerを間違った方法で使う

次のシナリオを考えてみてください.
  • あなたは新しいプロジェクト
  • で働き始めます
  • は、生産
  • ですでに容器(Docker)を使います
  • あなたはDockerfileで宣言されたイメージに基づいてローカル環境を設定します
  • ここでは大丈夫です.
  • を実行し、アプリケーションイメージを構築し始め、アプリケーション
  • に必要な依存関係の数をインストールします.
    その後、
  • 以降、サーバはdocker-compose upで実行されます.すごい、あなたはそれをチェックして、コード化を開始します
    すべては、ちょうどここでかなりokです.
    しかし、いくつかのコードを書いた後、アクションでそれを見たい.あなたは再びlocalhost:8080を実行します、そして、それはあなたがあなたの最悪の悪夢に直面するところです.
    その後、Dockerとすべてのコンテナパーティーは、時間の純粋な廃棄物であることに気づく.あなたは、あなたのホストマシンですべてのアプリケーション環境をあきらめて、インストールします.
    それで幸運.

    DockerFileの修正方法は?
    そうですね、DockerFileはnot following the best practicesであり、開発におけるコンテナの使用は非常に困難になります.
    この記事では、私は248079152を良いDockerfileを書くためにカバーしません、しかし、確かにそれは将来のポストでカバーされます.
    別の側面に焦点を当てます.
    best practices
    それらの本当のプロジェクトがDockerを使っている方法を忘れてください
    最初は逆説的に聞こえますが、私の議論は、あなたが今日Dockerを使い始めるならば、そのコンテナが正確にあなたが会社のプロジェクトで見るように働くと思っているということです.
    コンテナは、そのように向こうに行きます.最初の学習をお勧めします.実験.それらを使用して別のものや技術を試してください.
    次に、実際のプロジェクトのコンテナを使用することができます.

    それでは正しい方法は何ですか.
    あなたのホストにインストールされたNODEJSがないと仮定しましょう.人々はあなたのオペレーティングシステムに応じてnodejsを最初にインストールして、それを設定し、実行できるようになる前にいくつかのことを行います.
    node hello_world.js
    
    しかしDockerを使うと、ホストコンピュータにDockerをインストールする必要はありません.そうすることで、コンテナの中からコマンドを実行できます.
    docker run node hello_world.js
    
    パフォーマンスの面では、ホストからの実行とほぼ同じ時間がかかります.それは目立たない.
    また、ボックスの“バージョンマネージャ”を持つことができます:
    docker run node:10 hello_world.js
    docker run node:12 hello_world.js
    
    今、誰もが“空想的な新しいクールなバージョンマネージャ”を使用しているので、もはやあなたのバージョンマネージャ を変更する必要はありません.
    あなたのホストマシンはあなたに感謝します.
    every three years
    開発に効果的なコンテナ(Docker)を使用するためのヒント
    今後のセクションでは、おそらく問題のコンテナを解決するために役立ついくつかのヒントを共有します.

    イメージ!=コンテナ
    実際に ではなく、画像をお試しください.それだけで、understand and use containersを学びます.イメージは、あなたの最後の手段です.
    how images work
    ボリュームを学ぶ
    は、あなたの人生を保存します.まじめに.
    彼らはどのように動作し、どのように効果的に生産性を高めることができます.
    彼らは見かけほど堅くない.
    Mastering volumes
    Dockerネットワークを学ぶ
    容器はデザインで隔離される.ホストコンピュータを台無しにしたくないので、あなたはそれらを使います.
    しかし実際のプロジェクトでは容器は相互通信を必要とする. そして、あなたの容器をお互いに話させてください.
    Learn how to take advantage of the Docker network
    Docker CLIを最初に使用します.その後、Docker
    はかなり良いですし、あなたのプロジェクトをDockerで実行するために必要なほとんどすべての情報を提供します.
    重さはdocker-compose upを使用します.苦しむ.コマンドラインで痛みを感じてください.
    その後、それだけで、Docker documentation referenceは、本当にどのようにDockerは、CLIを作成する方法を理解し、さらに日常的にあなたを助ける.
    go to docker-compose
    Dockerを使ってPETプロジェクトを構築する
    これは、学習者のための完璧な運動です.あなたのホストから何かをインストールするか、使う衝動に抵抗してください.Webサーバーをコンテナに入れます.あなたのデータベースを容器に入れてください.
    スクラッチから本格的なペットプロジェクトの完全なスタックアプリケーションを構築する、これは最高の方法Dockerを使用して取得することです.
    あなたは後悔しないと戻ることはありません.

    結論
    この記事では、私は技術的に私はDockerが多くの開発者によって誤解されていると思う理由を説明しようとしました.
    「dockerが多すぎます」、または「dockerは生産に役立つだけです」のような引数は、通常理解の不足とともに来ます.開発中のDockerの周辺には が非常によくあり、正しく適用されればそれらの引数を論破するでしょう.
    もちろん、開発にDockerを使用することは必須ではありません.VimやVscodeでコーディングするのと同じようなツールです.