docker-basic_アイキャッチ

【初心者向け】Dockerの基本操作を解説!

はじめに

プログラミングや開発を進めるうえで仮想環境を利用することは今や当たり前になりました。
特にDockerを利用する機会が多いのですが、よくコマンドを忘れてしまうので忘備録もかねて基本操作をまとめます。
動作環境

 Windows10

 Docker Desktop

Dockerについて

仮想環境はDockerのコンテナ上に作成します。

インストール方法は以下の記事で紹介しています。
関連記事

はじめに プログラミングを行う際に実行環境を構築する必要がありますが、普段利用しているローカルPCに直接インストールしてしまっては、トライアンドエラーを繰り返すうちに不要なアプリケーションが積み重なり動作が不安定にな[…]

begindocker_アイキャッチ
また、DockerはWindows TerminalのPowerShellで行います。
こちらの記事でWindows Terminalのインストール方法も紹介していますので良ければ参照してください。
関連記事

はじめに Windows環境でLinuxのコマンドが利用できるWSL2についてインストールおよび利用方法を説明します。 Linuxコマンドが使えるようになると、様々なプログラミング言語や開発に利用できますので非常に[…]

beginwsl_アイキャッチ

Docker imageのダウンロード

様々なイメージが登録されているDocker Hubから取得したいタグを確認します。

タグは[REPOSITORY:TAG]の形式です。

docker pull python:latest #python動作環境のうち最新バージョンを取得
docker pull ubuntu:22.10 #バージョンを指定して取得

ダウンロードしたimageの確認

以下のコマンドでダウンロード済みのイメージをリスト表示できます。

docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       22.10     0f175c10c2b4   13 hours ago   70.2MB
python       latest    f05c8762fe15   11 days ago    921MB

ダウンロードした際のリポジトリとタグについても表示されています。

IMAGE IDはこの後も利用する場面があります。

コンテナ起動

ダウンロードしたイメージから実際に動作する仮想環境であるコンテナを起動します。

docker run -it --name ubuntutes ubuntu:22.10 /bin/bash
root@f8f24cde7491:/#

docker run :コンテナの起動ができます。

-it-iオプションと-tオプションを同時に指定しています。-iはコンテナの標準入力で開きます。-tは端末デバイスで開きます。
今はおまじないとして-itをつければよいです。

–name [name] :で起動したコンテナに任意の名前を付けることができます。
今回はubuntutesと名付けています。

ubuntu:22.10 :はダウンロードしたイメージのリポジトリとタグを指定します。

/bin/bash:コンテナ起動時にフォアグランドで実行するコマンドを指定します。ここで指定することでbashが起動しています。

コンテナを起動後にユーザー名とコンテナIDで起動していることがわかります。

f8f24cde7491がコンテナIDでrootがユーザー名となっており、ubuntuが利用可能な状態となっています。

コンテナを終了せずに抜ける

docker runすることでコンテナを利用可能となりましたが、元のpowershellに戻るためにはCtrl+p, Ctrl+q を入力するとOKです。

起動したコンテナはバックグラウンドで起動したままとなります。

起動中のコンテナを確認

docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
f8f24cde7491   ubuntu:22.10   "/bin/bash"   47 minutes ago   Up 47 minutes             ubuntutes

先ほど、コンテナを終了せずにpowershellに戻ったので、動作中のコンテナに「ubuntutes」が表示されます。

起動中のコンテナに接続(Attach)

先ほど起動したコンテナに再度接続します。

docker attach f8f24cde7491
root@f8f24cde7491:/#

docker attach [コンテナID]の形式で入力します。

コンテナの終了

起動中のコンテナを終了させるためのコマンドです。

exit
exit

exitコマンドを実行することでコンテナを終了してpowershellに操作が戻ります。

起動中のコンテナを確認すると表示されないのが確認できます。

docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

すべてのコンテナを確認

終了したコンテナも含めて確認したい場合は以下を実行します。

docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED             STATUS                       PORTS     NAMES
f8f24cde7491   ubuntu:22.10    "/bin/bash"   About an hour ago   Exited (127) 6 minutes ago             ubuntutes

-aオプションをつけることで起動状況に関わらずすべてのコンテナをリスト表示します。

コンテナの削除

コンテナを削除するには以下のコマンドを実行します。

docker rm f8f24cde7491
f8f24cde7491

削除した結果を確認します。

docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED      STATUS                    PORTS     NAMES

イメージの削除

ダウンロードしたイメージ自体を削除するためのコマンドです。

docker rmi ubuntu:22.10
Untagged: ubuntu:22.10
Untagged: ubuntu@sha256:4f9ec2c0aa321966bfe625bc485aa1d6e96549679cfdf98bb404dfcb8e141a7f
Deleted: sha256:0f175c10c2b410262bdbcb91b176a308d15dd1f77a80f00b8488fe84a9cabf7e
Deleted: sha256:cd1929199a9a438b8f7d1976e6bb71188958e173b12fb59d3168162251ddb3f4

イメージが削除されていることが確認できます。

docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
python       latest    f05c8762fe15   11 days ago   921MB

終了したコンテナの再起動

まずは、コンテナの起動状況を確認します。

docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS                     PORTS     NAMES
46f2ce700ab6   ubuntu:22.10    "/bin/bash"   2 minutes ago   Exited (0) 4 seconds ago             ubuntutest
e0db2ec0d559   python:latest   "/bin/bash"   2 days ago      Exited (0) 47 hours ago              pytest

STATUSがExitedとなっているため、コンテナが終了していることがわかります。

ubuntutestのコンテナを以下のコマンドで再起動します。

docker start -a 46f2ce700ab6
root@46f2ce700ab6:/#

フォルダの共有

コンテナ側とローカルPCのWindows側でフォルダの共有ができます。

ファイル共有を行うためには以下のコマンドで実行可能です。

docker run -it -v C:\Users\XXXX:/root/share --name ubuntutest ubuntu:22.10 /bin/bash
root@998ee0ea8e44:/#

docker runでコンテナを起動する際に-v [Windows側の共有するパス]:[コンテナ側のマウントするパス] のオプションを追加することでフォルダ共有をすることができます。

Dockerコンテナは基本的に使い捨てなので、ソースコードやログなど必要なファイルはこちらの方法で外部に保存することが可能です。

まとめ

Dockerでのイメージのダウンロードからコンテナの起動、リスト表示、終了などについてまとめました。
Dockerの操作についてより詳しく知りたい方は以下のような書籍を参考にしてみてください。
たった1日で基本が身に付く! Docker/Kubernetes超入門
著者:伊藤 裕一 (著)
出版社:技術評論社
本書は、次世代のアプリケーションアーキテクチャとして注目されている「マイクロサービス」の技術基盤となるコンテナ技術「Docker」とコンテナオーケストレーション技術「Kubernetes」を取り上げ、Dockerの基本的な利用法、DockerfileやComposeの設計、コンテナのデータ永続化やCI/CD、Kubernetesによる複数コンテナの自動管理までを、一気に学習します。出典:Amazon
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築

著者:大澤 文孝 (著), 浅居 尚 (著) 
出版社:日経BP
本書では、Dockerのインストール方法に始まり、基本的なWebサーバーを起動させるところから、永続化、ネットワーク、コンテナイメージへと順番に学ぶことができます。さらに、複数のコンテナを使うことを想定し、「Docker Compose」や「Kubernetes」についても学習できます。Kubernetesは学習ツールとして「Minikube」を用い、最終的に「Amazon EKS」でコンテナを実行するはじめの一歩までを説明します。出典:Amazon
Docker実践ガイド 第2版 impress top gearシリーズ

著者:古賀 政純 (著)
出版社:インプレス
IT現場で役立つ、Dockerの導入、運用ノウハウを凝縮。Dockerが利用される環境や背景を説明し、導入前のシステム設計、Dockerの基本的な利用方法、Dockerfileによる自動化の手法、管理・監視ツールについて、実際に操作をしながら解説します。出典:Amazon