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の利用方法
Docker Desktopのインストール
Dockerを利用するにはまずDocker Desktopをインストールする必要があります。公式サイトから自分のOSにあったインストーラーをダウンロードし、インストーラーを実行してください。基本的なインストールの流れはWindowsも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 nginxdocker 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