概要
Dockerの勉強をする際に ・Dockerってなんだ? ・仮想マシン(VM)と何が違うの? ・メリット、デメリットは? となったので、書き留めます。Dockerとは
Dockerとは、コンテナ型の仮想サービスを提供しているパッケージのこと
Dockerを使うことで、ソースコードや構築が面倒な実行環境などを配布したりできる(イメージ化)
Dockerイメージとは
Dockerの説明に”Dockerイメージ”という言葉がよく使われますが、なんでしょう?
これは実行環境や実行に必要な変数、メタデータなどを含んだ動作環境テンプレートです。
Dockerイメージを作成する場合、Dockerfileというものが必要となります。
Dockerfileとは
Dockerイメージを作成するための設計図のようなもので、どんな構成にしたいかなどをテキストファイルに打ち込み、それを元にDockerイメージを作成することで、処理の一元化が可能になる、というものです。
Dockerイメージを使用する際に押さえておきたいポイント
-
ポート設定
通信に用いるポート番号です。docker runする際に、-pオプションを使ってポートの結び付けを指定します。 -
永続化すべきディレクトリ
コンテナ内部のディレクトリのうち、マウントを必要とするディレクトリです。例えば「コンテンツを保存するディレクトリ」「データベースを保存するディレクトリ」などは、docker runする際に、-vオプションでそのディレクトリをマウントし、コンテナが破棄されても消えないようにします。 -
設定情報
ほとんどのDockerイメージは、環境変数などを使って各種設定をします。docker runする際に、-eオプションで指定します。
仮想マシンとの違い
仮想マシンとDockerの違いは以下です。
仮想マシン:
・OSを仮想化する
・OSの上にアプリケーションなどが乗っかっている
Docker:
・コンテナを仮想化する
・1個のOSをベースに複数のコンテナを用意できる
Dockerのメリット
・高速起動ができる ・簡単に環境構築ができる ・1個のコンテナにかかるリソースが少ないため、複数コンテナが起動していても負荷増にならない ・物理サーバーを用意しなくて良いデメリット
・OS違いの検証ができない
・コンテナを削除するとデータも削除される
・セキュリティリスクが大きい
→1つのOSで稼働しているため
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
疑問
・Dockerで本番環境運用すると、あまり良くないときくが、なぜか?コンテナに向く/向かないシステム
向くシステム
・システムの変更が活発に行われる ・アップデート等の変更に対応していく必要がある ・バッチ処理のために起動するシステム
向かないシステム
・システムの変更がほとんどない
・長期の安定性が求められる
・ライセンス管理、保守サポートが必要
メリット
・開発環境がイメージとして配布できるため、環境構築に時間をかけずに済む
・
デメリット
・セキュリティに懸念がある?
・コンテナのデータ保存に工夫が必要?(どこかのストレージ、ローカルに保存するなど?)
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
Dockerコマンドの早見表
Docker CLIの基本コマンド
DockerのCLIコマンドでよく利用するものをまとめてみました。
・Docker基本情報
docker version:Dockerバージョン情報の表示
docker info:Dockerシステム情報の表示
・コンテナの生成と削除
docker create:コンテナの生成
docker rm:コンテナの削除
・コンテナの実行
docker run:新規コンテナでコマンドを実行
・コンテナの起動・停止
docker start:コンテナの起動
docker stop:実行中のコンテナの停止
docker restart:コンテナの再起動
・コンテナ内プロセスの一時停止と解除
docker pause:コンテナ内プロセスの一時停止
docker unpause:コンテナ内プロセスの停止解除(再開)
・コンテナの操作
docker attach:標準入出力・エラー出力の実行中コンテナへの割当
docker exec:実行中コンテナでのコマンド実行
docker cp:ファイルやフォルダーのコンテナ間、ローカルファイルシステム間でコピー
・コンテナの保全
docker rename:コンテナ名の変更
docker diff:コンテナのファイル・ディレクトリ変更確認
・稼働状況とログ出力
docker ps:コンテナの一覧表示
docker top:コンテナ内実行プロセスの表示
docker stats:コンテナのリソース統計出力
docker logs:コンテナからログの取込み
Docker CLIのイメージ向けコマンド
Docker CLIのコマンドは多岐に渡りますが、Dockerイメージに関係するコマンドは以下の通りです。
・イメージの表示と管理
docker history:イメージの履歴表示
docker image:イメージの管理
docker images:イメージの一覧表示
docker inspect:Dockerイメージ等のオブジェクト詳細情報表示
・イメージの生成(作成)と削除
docker build:Dockerfileからイメージのビルド
docker commit:コンテナの変更情報からイメージを生成
docker rmi:イメージの削除
docker import:Tar形式アーカイブからファイルシステムイメージを生成
・イメージの保全
docker tag:イメージ共有用にタグ付け
docker trust:イメージ上の Docker署名管理
・イメージのロードと保存
docker load:Tar・標準入力からイメージをロード
docker save:イメージを Tarアーカイブとして保存
・リポジトリ運用
docker login:Docker Hub(Dockerレジストリ)にログイン
docker logout:Docker Hub(Dockerレジストリ)からログアウト
docker search:Docker Hubでのイメージ検索
docker pull:レジストリからイメージ・リポジトリのPull(ダウンロード取得)
docker push:リポジトリ・レジストリに対するイメージPush(アップロード登録)
参考文献
・Dockerイメージとコンテナの違いとは?作成の流れ入門