LoginSignup
0

More than 1 year has passed since last update.

[備忘録]Dockerとは?

Posted at

概要

Dockerの勉強をする際に ・Dockerってなんだ? ・仮想マシン(VM)と何が違うの? ・メリット、デメリットは? となったので、書き留めます。

Dockerとは

Dockerとは、コンテナ型の仮想サービスを提供しているパッケージのこと
Dockerを使うことで、ソースコードや構築が面倒な実行環境などを配布したりできる(イメージ化)

Dockerイメージとは

Dockerの説明に”Dockerイメージ”という言葉がよく使われますが、なんでしょう?
これは実行環境や実行に必要な変数、メタデータなどを含んだ動作環境テンプレートです。
Dockerイメージを作成する場合、Dockerfileというものが必要となります。

Dockerfileとは

Dockerイメージを作成するための設計図のようなもので、どんな構成にしたいかなどをテキストファイルに打ち込み、それを元にDockerイメージを作成することで、処理の一元化が可能になる、というものです。

Dockerイメージを使用する際に押さえておきたいポイント

  1. ポート設定
     通信に用いるポート番号です。docker runする際に、-pオプションを使ってポートの結び付けを指定します。

  2. 永続化すべきディレクトリ
     コンテナ内部のディレクトリのうち、マウントを必要とするディレクトリです。例えば「コンテンツを保存するディレクトリ」「データベースを保存するディレクトリ」などは、docker runする際に、-vオプションでそのディレクトリをマウントし、コンテナが破棄されても消えないようにします。

  3. 設定情報
     ほとんどの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イメージとコンテナの違いとは?作成の流れ入門

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0