Dockerで作業用のカスタムコンテナを作成する方法
本記事では、Dockerを使って作業用のコンテナを作成する方法を解説します。作業用のコンテナを作成することで、自分だけのカスタム環境を簡単に構築できます。また、他の環境に移行する際にも、環境の再現性が高くなるため、開発・運用効率の向上につながります。
実行環境
- Ubuntu 20.04.3 LTS (WSL2)
- Dockerインストール済み
- Docker起動中
作業環境の構築と利用手順
利用するイメージの取得
Docker Hubからイメージを取得します。
今回はLinux, python(3.10)を指定します。
docker image pull python:3.10
# または (旧コマンド)
docker pull python:3.10
イメージ一覧を表示し、pythonが正しくpullできているか確認します。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.10 2b8b079d7548 24 hours ago 912MB
コンテナを作成する
次のコマンドでコンテナを作成します。
docker container create [オプション] [イメージ名]
# または (旧コマンド)
docker create [オプション] [イメージ名]
コマンド例
docker container create -i --name fastapi-sample -p 9000:8000 python
今回は起動後にシェルで作業を行いたいため、-i
オプションを付けています。
コンテナ一覧を表示し、作成したコンテナが正しく作成できているか確認します。
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7cca4d84404 python "python3" 49 seconds ago Created fastapi-sample
コンテナを起動する
docker container start [オプション] [コンテナ名]|[コンテナID]
# または (旧コマンド)
docker start [オプション] [コンテナ名]|[コンテナID]
コマンド例
docker container start fastapi-sample
コンテナ一覧を表示し、起動したコンテナのSTATUS
がUP
であればコンテナが起動しています。
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7cca4d84404 python "python3" About a minute ago Up 3 seconds 0.0.0.0:9000->8000/tcp, :::9000->8000/tcp fastapi-sample
docker container create
時に-i
オプションが無かった場合は起動してすぐに停止するため、STATUS
がExited
になります。
コンテナにログインする
起動中のコンテナにログインし、作業を行います。
docker container exec -it [コンテナ名] bash
# または (旧コマンド)
docker exec -it [コンテナ名]
exit
でコンテナからログアウトします。
以下でイメージダウンロードからコンテナ作成・実行、コンテナへのログインまで行えます。
-rm
オプションを付けると、コンテナは終了時に削除されます。
docker container run -it --rm [イメージ名]
コンテナを停止する
docker container stop [コンテナ名]|[コンテナID]
# または (旧コマンド)
docker stop [コンテナ名]|[コンテナID]
Visual Studio Codeでコンテナ内のファイルを編集する方法
WSL2上で実行中のDockerコンテナ内のファイルをVisual Studio Codeで編集できるようにする方法です。
前提条件として、Remote Development 拡張機能パックがインストール済みであることなので、下記を参考にインストールしておきます。
方法1
- WSL2上でコンテナを起動する
- WSL2のシェル(※)上で
code
と入力する
→Windows上でVisual Studio Codeが起動する
※コンテナのシェルではないので注意 - コマンドパレットを起動(
Ctrl + Shift + p
)し、"container"と入力する - Dev Containers: Attach to Running Container...を選択
- 起動中のコンテナがリスト表示されるので、選択
- コンテナにVisual Studio Codeがアクセスできるようになる
方法2
- Visual Studio Codeを起動する
- コマンドパレットを起動(
Ctrl + Shift + p
)し、"WSL"と入力する - WSL: Connect to WSL を選択する
- WSLに接続できたら、再度コマンドパレットを起動する
- "container"と入力する
- Dev Containers: Attach to Running Container...を選択
- 起動中のコンテナがリスト表示されるので、選択
- コンテナにVisual Studio Codeがアクセスできるようになる