Dockerとは
Dockerとは、コンテナ仮想化によるOSレベル仮想化プラットフォームソリューションです。Dockerイメージを用いたコンテナ仮想化システムを構築できます。Dockerにより、CI/CDのサイクルをさらに短周期で迅速に実施することができますので、開発ライフサイクルの効率性が一層高まります。
参考:Docker
Dockerコンテナとは
コンテナとは、仮想マシンと異なりホストカーネルを利用し仮想化を実現します。ホストカーネルからはプロセスとして動作し、他のプロセスと分離させています。Dockerコンテナはこの仕組みを実装し、システムオーバーヘッドの削減と管理を容易にしました。
Dockerイメージとは
コンテナで用いるイメージは、個々に分離された動作環境テンプレートです。アプリケーション実行に必要な変数・コマンドやメタデータを含みます。DockerはDockerイメージを用いてコンテナ動作させるものです。DockerfileをビルドすることでDockerイメージを生成します。
公開されているDockerイメージを取得するには ”docker pull” を用います。デフォルトで利用されている公開レジストリはDocker Hubと言います。レジストリに登録する場合は”docker push”を用います。
Dockerイメージとコンテナの違いは?
Dockerで用いる用語であるイメージとコンテナの違いは何でしょうか?この用語の違いは、コンテナ動作の流れを考えるとわかりやすいです。
以下の通り(1)→(2)→(3)の順番で構成していきます。
(1)必要な構成ファイルをDockerfileとして作成
Dockerfileをテキスト形式の構成ファイルとして作成します。テキストエディタがあれば作成できます。
(2)Dockerイメージを読み込みテンプレートとして作成
Dockerfile(構成ファイル)からコンテナ動作させる読み込みテンプレート(スナップショット)を生成します。ここでアプリケーション実行に必要な変数・コマンドやメタデータを含んだテンプレートファイルを、Dockerイメージと言います。”docker build”でDockerfileからDockerイメージを作成します。このファイルはディスクに格納された静的情報(起動前の状態)となります。
(3)Dockerイメージを用いてコンテナ実行
Dockerイメージは静的なテンプレートファイルですので、”docker run”で起動します。Dockerイメージは起動することでコンテナで実行されます。実行されているコンテナはメモリー上の動的情報(実行インスタンス)となります。つまりコンテナ実行するにはDockerイメージが必要となり、実行状態のインスタンスをコンテナと言います。
Dockerイメージの一覧
取得済みDockerイメージは Docker DesktopのダッシュボードのImages画面で一覧表示されます。この一覧から必要なイメージを選択し「Run」でコンテナ実行します。オプション変更が必要な場合は「Optional settings」で設定変更します。
最新のイメージは公開リポジトリであるDocker Hubから入手(Pull)します。「View in Hub」で詳細情報が表示されます。Docker Hubの登録状況ですが2021年11月現在、Docker Official Imageが171件、Verified Publisherが8,815件、全体で8,543,672件登録されています。Docker Hubでフィルター表示を活用し必要なイメージを一覧表示することもできます。
Docker Hubの人気・おすすめイメージは?
Docker blogに不定期掲載されているDockerの統計情報 Docker Indexによると、2020年上期人気のコンテナイメージは、nginx・busybox・httpd・postgres・redis・memchached・alpine・traefik・ubuntu・mongoとなっています。
同様に検索ランキングは、msql・nginx・ubuntu・node・python・php・centos・redis・postgres・jenkinsです。
参考:Docker Index: Dramatic Growth in Docker Usage Affirms the Continued Rising Power of Developers
Official imageで人気ランキング上位のコンテナイメージを利用することで、コンテナの有効活用が期待できます。
Dockerイメージの利用方法
DockerイメージはDocker CLI(docker)、またはDocker DesktopのImagesから利用します。Official imageを活用することで、効率的にコンテナ化が可能になります。よく使うDocker CLIのコマンドやイメージ用コマンドについては以降で説明します。
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 Composeを用います。イメージの配布は”docker save”と”docker load”を組み合わせたり、”docker push”と”docker pull”を組み合わせたりして利用します。
Dockerイメージを用いて効率的にコンテナ環境を整備しましょう
Dockerイメージはコンテナで用いるテンプレートなため、Docker Hubに登録されているDocker Official Imageから選択できると利用効率が高まります。多くのアプリケーションはサイトに登録されており、実績あるDockerイメージを活用することで運用効率がさらに高まるため、おすすめです。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから