【Docker入門】Dockerとは?基本操作説明

技術メモ

Dockerはコンテナ型の仮想環境を作成・配布・実行するためのプラットフォームです。

仮想環境と言うと、よく比較されるVirtualBoxなど仮想マシンとは異なり、ゲストOSが不要となるため、その分軽量、高速に起動、停止が可能となります。

上記図の通り、仮想マシンの場合はホストOSの上にゲストOSを構築し、ミドルウェア、アプリを載せる構造になっていますが、Dockerのコンテナ型は、ホストOSのカーネルを利用し、ゲストOSがあるように仮想環境を構築するため、ゲストOSを必要としません。

Dockerは環境設定がコード化され扱いが簡単になっており、Git等でバージョン管理を行うことも可能になっています。このように環境設定をコード化する技術をInfrastructure as Codeと呼びます。

環境設定をコード化することで、環境変更が容易に行うことが可能となり、またコードファイルを共有することで、誰でもすぐに同じ環境を構築することが可能です。

また、開発者の環境がWindowsやMacなど異なる場合においても、コードファイルを利用、共有することで、同じ環境で開発を行うことができるため、環境差分による問題が起きにくくなります。

また本番環境においても同様に、開発環境との環境差分を極力減らし、スムーズな移行、適用が可能となります。

環境情報

PC:Mac Mini 2020
プロセッサ:Apple silicon (M1)
OS:macOS Sonoma
メモリ:8GB

DockerHub

Docker Hubでは様々なコンテナイメージが一般公開されており、誰でも簡単に使うことが可能です。ここからコンテナイメージを取得することで、すぐに環境を構築することが可能です。

Docker Hub Container Image Library | App Containerization
Welcome to the world's largest container registry built for ...

Dockerの利用方法

Docker Desktopのインストール

Dockerを利用するにはまずDocker Desktopをインストールする必要があります。公式サイトから自分のOSにあったインストーラーをダウンロードし、インストーラーを実行してください。基本的なインストールの流れはWindowsもMacも同じです。

Docker Desktopインストール(Mac)

①インストーラーをダウンロード
②Docker.dmgをダブルクリック
③Dockerアイコンをアプリケーションフォルダへ移動
④規約を確認して同意

Dockerインストールの確認

terminalからDockerのバージョン確認コマンドを実行し、正常にDockerがインストールできているか確認します。バージョン情報が表示されれば問題ありません。

docker --version

コンテナ作成に必要なコンテナイメージの取得

コンテナを作成するために必要なコンテナイメージを取得します。コンテナイメージはコンテナを立てるのに必要なコマンドやメタデータを含んだファイルのことです。

今回はnginxを実行するコンテナを作成します。

コンテナイメージはDocker Hubにてnginxを検索し、Officialアカウントからdocker pullのコマンドをコピーしTerminalからコピーしたコマンドを実行します。

docker pull nginx

docker pullコマンドを実行することで、Docker hub上にあるコンテナイメージをローカルにダウンロードを行うことができます。docker pullはどのディレクトリから実行してもdockerのフォルダ内にダウンロードされます。

補足

コンテナを作成する際、docker runコマンドでローカルにコンテナイメージがない場合は、Docker Hubから対象のファイルをダウンロードしてくれるため、docker pullコマンドを利用しなくてもコンテナイメージを取得することは可能です。

保有しているコンテナイメージの確認

ローカル(PC内)にあるコンテナイメージの一覧を表示します。

docker images

コンテナイメージからコンテナを作成

コンテナイメージからコンテナを作成します。作成するために必要なコマンドはDocker Hubに記載されています。

nginxの場合

docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx

docker runコマンドオプション

docker run --name <識別子>

コンテナの識別子 任意の名前を設定する。

docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw

コンテナ側の環境変数の設定(ローカル側の環境変数ではありません)

docker run -d

デタッチドモード。バックグラウンドでコンテナを実行する

docker run -v <ホスト側ディレクトリ絶対パス>:<コンテナ側ディレクトリパス>

ホスト側のディレクトリをコンテナにマウントさせる。

docker run -p <ローカルPC側ポート>:<コンテナ側ポート>

ローカルPCのポートへの通信をコンテナ側のポートへ転送(ポートフォワディング)する。

docker runコマンドを実行するとコンテナIDが表示され、コンテナが立ち上がります。

起動コンテナの表示

docker ps

現在起動しているコンテナのみ一覧表示します。

docker ps -a

-aオプションをつけることで、停止しているコンテナも含め表示されます。

コンテナが正常に起動できれば、もうnginxでWebサーバーが立ち上がっています。

起動しているコンテナの中に入る

docker exec

起動しているコンテナの中に入ることができます。

-itオプションをつけることで、コンテナ側のコマンド操作を今使っているコンソールから操作することができます。

また、bashと記載することで、コンテナ内でbash利用が可能となります。

コンテナから出る場合はCtl+Qまたはexitを入力します。

コンテナを停止、起動する

コンテナを停止

docker stop

停止しているコンテナを起動

docker start

作成済みのコンテナを起動する場合はdocker startコマンドのみで起動することが可能です。

ポイント

docker run:コンテナイメージからコンテナを作成し起動する
docker start:構築済みの停止しているコンテナを起動する

コンテナの削除

コンテナの削除

docker rm

コンテナイメージの削除

docker rmi