OSS

Docker入門 ~Windows10(WSL2)でDockerを試す~

はじめに

Dockerやコンテナについては仕事で語ることはあっても実際に直接触れる機会が少なかったので、この機会に基本的な操作を学んでおきたいと思いました。備忘録という観点でも纏めます。
この記事ではDockerの導入方法、基本動作について説明していきます。
・WindowsでDockerを試したい
・Linux上からの捜査感でDockerを利用したい

Dockerとは

Dockerは、コンテナ化技術を使用してアプリケーションを開発、デプロイ、実行するためのプラットフォームです。
作成したアプリをコンテナにしておけば、別の環境でもDockerエンジンさえあれば簡単に移行・デプロイが可能です。これにより特定環境でしか動かない、というような問題や動作環境構築にかかる多大な工数の削減などにつなげることが出来ます。

導入方法

今回筆者はWSL2(Windows Subsystem for Linux 2)のUbuntu 20.04を利用します。
WSLの構築方法については以下を参照してください。
https://sidefire-engineer.com/node-red入門/

dockerのインストール手順についても公式ページで紹介されています。
https://docs.docker.com/engine/install/ubuntu/
この記事では公式手順に沿って必要な手順を解説していきます。今回はUbuntu向けのインストール方法を参照しながら進めます。

aptでインストール可能なパッケージ情報のアップデート、HTTPS経由のレポジトリを利用するために必要なパッケージをインストールします。

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

docker公式のGPGを追加します。GPGとはソフトウェアの検証に使われる暗号化ソフトです。

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

リポジトリのセットアップを行います。

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

dockerをインストールします。

sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Dockerの基本操作

ここからはインストールしたDockerの基本操作について説明します。

docker version

Dockerのバージョンを表示する場合は以下を実行します。

sudo docker version

Dockerのバージョンや、APIのバージョン、ビルドされた時間などが表示されます。

file

ここで、DockerのClent、Serverの両方の情報が表示されています。
Docker Clientは、Docker Serverに対してアプリケーションをビルド、デプロイ、実行するためのコマンドを送信するために使用されます。
Docker Serverは、Docker Clientからのコマンドを受け取り、アプリケーションをビルド、デプロイ、実行するために必要なタスクを実行するために使用されます。

docker pull

ここでは、動作確認に向けて「Hello World」と表示するコンテナをダウンロードして実行してみます。
コンテナのダウンロードには「docker pull」コマンドを使います。取得したコンテナイメージはdocker imagesで確認可能です。

sudo docker pull hello-world
sudo docker images

筆者の環境では以下の表示になりました。

file

docker ps

動作しているコンテナの確認にはdocker psコマンドを使います。

sudo docker ps

今の状態では動作しているコンテナが無いため何も表示されません。
実際に動作しているコンテナの確認については後ほど解説します。

尚、停止しているコンテナも含めて表示させたい場合はdocker ps -aを用います。

docker run

コンテナの起動にはdocker runコマンドを使います。
先ほどpullしたhello-worldコンテナを起動してみます。

sudo docker run hello-world
file

無事、「Hello from Docker !」と表示されました。
コンテナ名の指定ではなく、IDを指定して起動することも可能です。
docker imagesコマンドの実行で表示される、IMAGE IDで確認できます。
尚、ID全文字を入れる必要はなく、一意に決まる範囲でいれればOKです。極端な話先頭一文字が他コンテナと被ってなければ一文字だけでもいけます。

Hello worldだと表示だけで少し寂しいので、次はcentosのコンテナイメージをダウンロードして起動、docker psで確認してみます。

sudo docker pull centos
sudo docker run centos
sudo docker ps

何も表示されません。runで起動しただけではすぐに停止してしまうからです。
ここで、-itオプションを使用します。
-iはホスト側からコンテナ側への入力を認めるようにさせるオプションで、-tはコンテナ側からホスト側への入力を認めるようにさせるオプションです。

sudo docker run -it centos

これで無事コンテナで起動したcentosにログイン出来ます。
ログアウトするためにはexitコマンドを入力するか、Ctrlキーを押した状態で「P」、「Q」キーを順番に押してください。

centosのコンテナにログインした状態で、別端末を開いてdocker psを再度実行するとcentosのコンテナが起動中という表示になります。

その他のコマンド

docker start:停止したコンテナを起動(runはコンテナイメージからの起動)

docker stop:コンテナを停止

docker rm: コンテナを削除

docker rmi: コンテナイメージを削除

まとめ

この記事ではWindowsからdockerを利用する手順、及び基本操作について説明しました。
コンテナイメージの構築方法等のさらに深い部分については今後引き続き纏めていきたいと思います。

ABOUT ME
kafka
<経歴> 某大手IT企業でハード設計6年経験後、ソフト設計に携わり始めて4年目。 <発信内容> 忙しいITエンジニアに向けて、日経新聞、IT media NEWS、Ledge.ai等、様々なニュースサイトから気になるニュースをピックアップ。自己研鑽に向けた技術情報も発信。 <趣味> 料理、散歩、Youtube視聴 <SNS> Twitter https://twitter.com/ken07949464