【初心者】Dockerについて学んだこと

箇条書きでめちゃくちゃ見づらいと思います。すみません。

余裕のある時に整理したいと思っています。

仮想マシンとコンテナ

  • 仮想マシンは、ソフトウェアでコンピュータをまるまる再現する仕組み
    起動に時間がかかり、重い。コンテナにはゲストOSがいらないため仮想マシンより軽量
  • Dockerはコンテナの一つ。
    起動が早いがある程度ホストと環境を共有する(OSはホストと同じ)。
    ホストのとあるディレクトリをルートとして扱うようなイメージ。

Dockerでデプロイするまでの流れ

  • ビルド成果物を本番サーバに配置することをデプロイと言う
  • コンテナの実行はイメージをもとに行う。
    イメージはDockerfileからdocker buildで作り、イメージからdocker runでコンテナを起動する。
    この時、docker build時に指定されたプログラムを実行するようになっている。
    また、docker buildにはオプションでタグ名を指定できる。
  • docker run rmオプションでコンテナ終了時に自動的に削除するようにすると、コンテナがいっぱい貯まるのを防げる。
  • アプリのコンテナ化と実行
    イメージの作成→イメージのアップロード→イメージのダウンロード→コンテナの実行
  • イメージをpullするサーバをEC2などにすることでクラウドにデプロイできる
  • 本番環境でコンテナを動かす際は、DockerやDocker Composeを使わず、コンテナのプラットフォームを使うことが多い
  • 本番環境でコンテナを使うメリット
    環境構築済みのイメージをもとに実行するので動作が保証しやすい
    一つのサーバ内で様々なアプリを動かしても競合しにくい
  • 複数代のサーバでたくさんのコンテナを使うのが良い
    冗長化できる
    オートスケールにはコンテナオーケストレーションのサービスを使う(EC2やKubernetesなど)
  • HerokuなどのPaaS, AWS App Runner, Google Cloud Runなどを使うと、イメージのビルドからデプロイまで自動化できる
    単純なアプリ(自力でDockerfileを書く必要がない)の場合はこれらを使うのもいい
  • docker composeは、コンテナの設定がまとめて書かれたyamlファイルをもとにコンテナを起動する仕組み(いちいちdockerコマンドで設定する必要がなくなるので楽)
  • RUNで指定したコマンドはイメージ作成時に実行され、CMDもしくはENTRYPOINTで指定したコマンドはコンテナ開始時に実行される

コメント

タイトルとURLをコピーしました