4
5

More than 1 year has passed since last update.

Docker Desktopのインストール、Dockerfile作成、コンテナビルドと修正

Last updated at Posted at 2023-07-23

はじめに

Windows11Pro+WSL2+Ubuntu+Docker環境を構築し、
VS CodeからUbuntuに接続しプログラム作成、コンテナイメージ作成、
AWSのECRへプッシュ、ECSへのデプロイ・接続確認までを行います。

  1. WSL2のインストール
  2. Visual Studio CodeのインストールとUbuntu on WSL2への接続
  3. Docker Desktopのインストール、Dockerfile作成、コンテナビルドと修正 (今回の記事)
  4. AWS CLIインストール、IAMユーザー作成、アクセスキー作成、AWSリソースへのアクセス
  5. AWS ECRリポジトリ作成、Ubuntu on WSL2からECRへのプッシュ
  6. AWS ECSのタスク定義、クラスタ作成、サービス作成

以降では「WSL2上のUbuntu」を単に「Ubuntu」と表現します。

Docker Desktopのインストール

image.png

インストーラーを実行します。
image.png

「Use WSL2 instead of Hyper-V」にチェックが入っていることを確認し、「OK」をクリックします。
image.png

「Close and restart」をクリックします。

クリック後、すぐにWindowsが再起動します。

image.png

Windowsの再起動が完了すると、下記画面が表示されます。
「Accept」をクリックします。
image.png

「Sign in」をクリックし、Docker IDでサインインします。
Docker IDを持っていない場合は新規作成します。
image.png

サインインした後の画面です。設定ボタンをクリックします。
image.png

「General」の中の「Use the WSL2 based engine」にチェックが入っていることを確認します。
image.png

「Resources -> WSL integration」の中で「Ubuntu」を有効にし、「Apply & restart」をクリックします。
image.png

dockerコマンドの確認

上記までの設定が完了すると、Ubuntu上でdockerコマンドが利用可能になります。
hello-worldイメージを実行してみましょう。

bash
docker run hello-world

 
「Hello from Docker!」が表示されました。
image.png

※Docker Desktopが起動していない状態だと下記のようにエラーになります。
image.png

テストアプリの作成

pythonのフレームワークflaskを利用して、簡単なテストアプリを作成し、コンテナ化します。

Ubuntuで下記を実行します。

bash
# ホームディレクトリに移動
cd

# myapp ディレクトリを作成
mkdir myapp

# myapp ディレクトリに移動
cd myapp

# カレントディレクトリ確認
pwd

# VS Code起動
code .

image.png

VS Codeで下記3ファイルを作成します。

myapp.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=int("5000"), debug=True)
Dockerfile
# ベースとなるイメージを指定
FROM python:3.9

# 作業ディレクトリを設定
WORKDIR /app

# 依存関係を含むrequirements.txtをコピー
COPY requirements.txt .

# パッケージをインストール
RUN pip install --no-cache-dir -r requirements.txt

# アプリケーションのソースコードをコピー
COPY . .

# ポート5000を開放
EXPOSE 5000

# Pythonスクリプトを実行
CMD [ "python", "app.py" ]
requirements.txt
Flask

 
下記のような状態になります。
image.png

コンテナビルド

下記コマンドで、コンテナをビルドします。
WindowsターミナルからでもVS Codeからでもコマンド実行できます。以降のdockerコマンドはWindowsターミナルで実行した例です。

bash
docker build -t myapp:v1 .

image.png

コンテナイメージが作成されたことを確認します。

bash
docker image ls

 
作成されたことが確認できました。
image.png

コンテナ起動

下記コマンドで、コンテナを起動します。

bash
docker run -p 5000:5000 myapp:v1

image.png

ブラウザから下記にアクセスし、確認します。
http://localhost:5000/
image.png

Ctrl + C でコンテナを終了します。

コンテナ内アプリケーションの修正と確認

VS Codeからコードの修正と確認をスムーズに行います。
下記コマンドでコンテナを起動します。

bash
docker run -p 5000:5000 -v /home/hiropon/myapp:/app myapp:v1

「hiropon」は各自のユーザー名に読み替えてください。
Ubuntu上の/home/hiropon/myappディレクトリが、コンテナ内の/appディレクトリにマウントされている状態でコンテナが起動します。
そのため、Ubuntu上のファイルをVS Codeから修正することで、起動しているコンテナに変更が反映されます。

image.png

ブラウザから下記にアクセスし、確認します。
http://localhost:5000/
image.png

VS Codeからapp.pyを修正し、保存します。

app.py
-    return 'Hello, World!'
+    return '<font color="red"><b>Hello, World!</b></font>'

image.png

ブラウザから下記にアクセスし、表示が変更されていることを確認します。
http://localhost:5000/
image.png
Ctrl + C でコンテナを終了します。

コンテナ再ビルド

アプリケーションの修正が完了したら、下記コマンドでコンテナをビルドします。タグはv2とします。

bash
docker build -t myapp:v2 .

image.png

再・コンテナ起動

下記コマンドで、v2版のコンテナを起動します。

bash
docker run -p 5000:5000 myapp:v2

image.png

ブラウザから下記にアクセスし、確認します。
http://localhost:5000/
image.png
Ctrl + C でコンテナを終了します。

さいごに

Docker Desktopのインストール、コンテナのビルドが完了しました。
次回は、UbuntuからAWSリソースへ接続してみます。

コンテナの作成・修正方法は数多くありますが、今現在の自分がやりやすいと思う方法を紹介しました。
より便利な方法があるよ、という方いらっしゃいましたら是非コメントやTwitterで教えてください。

参考ページ

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5