概要
さくらのクラウド「AppRun」(β)に、アプリケーションをデプロイします。 デプロイする前に、事前に Docker イメージの作成と、イメージをコンテナレジストリにアップロードする必要があります。
そのため、ハンズオンの流れとしては、まずさくらのクラウド上に仮想サーバを作成します。それから、Docker Engine のセットアップを行い、イメージの構築とコンテナレジストリにアップロードをします。これら準備が整った後、AppRun 上にアプリケーションをデプロイします。
環境準備
手順
さくらのクラウド上に今回作業するサーバを作成します。
- OS: Ubuntu Server 24.04.1 LTS
- CPU core: 2
- Memory: 2GB
- Storage: SSD 20GB
コントロールパネルの URL をウェブブラウザで開きます:
-
さくらのクラウドコントロールパネルにログインします。
-
ホーム画面の場合は「さくらのクラウド」をクリックします。
-
「接続情報」の「使用するゾーン」列を確認し、自分の画面上のゾーンを切り替えます。それから、左メニューの「サーバ」が選択された状態で、画面右上の「追加」をクリックします。
-
サーバプランを「2仮想コア / 2GB」をクリックします。
-
「サーバの設定」にある「管理ユーザのパスワード」を入力します。※あとでサーバにログインするときに必要です。忘れずメモを残すか、コントロールパネルのログイン用パスワードを入力してください。
-
ホスト名を「docker」と入力します。
-
画面一番下の「作成」をクリックします。
-
操作確認画面でも「作成」をクリックします。
-
サーバの準備が整うまで待ちます。
-
作成完了後、左メニューの「サーバ」をクリックし、サーバが起動中の状態を確認します。
ハンズオン手順
A. Docker 実行環境の準備
A-1. 《さくらのクラウド》サーバにログイン(SSH 接続)する
SSH 専用クライアントで接続、またはターミナルやコマンドプロンプト上で以下のコマンドを実行します。
例えば IPアドレスが 133.242.220.49 の場合は、次のように入力します。
$ ssh ubuntu@133.242.220.49
はじめてサーバに接続する時、SSH 鍵のフィンガープリントの確認を求められます。
YES と入力してエンターを押します。
The authenticity of host '133.242.220.49 (133.242.220.49)' can't be established.
ED25519 key fingerprint is SHA256:nKdtQcbK24n2Mfd/xuwHXKG372musKeSPEwo78lc/UE.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
その次に、ubuntuユーザのパスワードを入力します。
Warning: Permanently added '133.242.220.49' (ED25519) to the list of known hosts.
ubuntu@docker's password:
正常に接続すると、つぎのような表示になります。
(省略)
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@docker:~$
A-2. Docker Engine のインストール
以下の各行を実行します。
これは https://get.docker.com/ の応答そのものが、 Docker をセットアップするためのスクリプトです。 curl で -o オプションを付け、 get-docker.sh として出力し、これをコマンドとして実行します。
curl -fsSL https://get.docker.com -o install-docker.sh
sudo sh ./install-docker.sh
sudo usermod -aG docker ubuntu
これでインストールは終わりました。
一度ログアウトし、再度SSHログインします。
exit
SSHで再接続後、以下のコマンドを実行してエラーが出なければ問題ありません。
docker version
docker version はバージョン版を表示するコマンドで、正常にセットアップが終わっていればクライアントとサーバ両方のバージョン番号が出ます。
B. hello-world コンテナの実行
B-1. hello-world コンテナの実行
Docker コンテナを実行するには docker run <イメージ名> か docker container run <イメージ> コマンドを使います。ここで指定したイメージを使い、イメージに含むファイルと情報を使い、それをコンテナ状態でプログラムを実行します。
1. 次のコマンドを実行し、 hello-world コンテナを実行します。
docker run hello-world
2. 実行した内容を確認後、サーバのローカルにあるイメージ一覧を表示します。
docker images
3. その後、もう一度 hello-world コンテナを実行します。先ほどとの実行結果の違いが分かりますか?
docker run hello-world
B-2. hello-world イメージを詳しく調べる
1. イメージ一覧を表示します。
docker images
2. イメージの作成履歴を調べます。
docker history hello-world
3. イメージの内容詳細を調べます。
docker inspect hello-world | more
C. サンプルアプリケーションの作成
C-1. 作業用ディレクトリを作成し、移動します。
mkdir apprun-demo && cd apprun-demo
C-2. 関連するファイルを作成します。
app.py アプリケーション本体
cat << EOF > app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from AppRun!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
EOF
requirements.txt 依存関係指定のファイル
cat << EOF > requirements.txt
flask
EOF
Dockerfile
cat << EOF > Dockerfile
FROM python:3.13-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
EOF
C-3. アプリケーションを実行する Docker イメージを構築します。
docker build コマンドで myapp イメージを構築します。
docker build -t myapp .
実行後、 docker images コマンドを実行し、 myapp:latest イメージが作成されているのを確認します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp latest 1871bf0fbc3c 3 minutes ago 134MB
hello-world latest 74cc54e27dc4 4 months ago 10.1kB
C-4. myapp イメージを実行します。
ただしくアプリケーションが作られているかどうか確認するため、 docker run -d -p 8000:8000 --name myapp myapp コマンドを実行し、アプリケーションを実行します。
docker run -d -p 8000:8000 --name myapp myapp
実行後、 docker ps コマンドを実行すると、アプリケーションが実行しているように見えます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
babd8bee234a myapp "python app.py" 3 seconds ago Up 2 seconds 0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp myapp
それから、ウェブブラウザで http://<サーバのIP>:8000 を指定し、デモ画面が開くのを確認します。
正常に動作する場合「Hello from AppRUn!」という文字が見えます。
これで Docker イメージの準備は整いました。
D. コンテナレジストリの準備と Docker イメージのアップロード
D-1. コンテナレジストリのリポジトリ作成
AppRun でアプリケーションを動かすためには、コンテナレジストリに Docker イメージを格納しておく必要があります。
そのためには、まずウェブブラウザでコンテナレジストリの URL を表示します。
表示後は、画面右上の「+追加」をクリックします(詳細マニュアルはこちら )。
「名前」と「コンテナレジストリ名」を入力し、「作成」をクリックします。「名前」はコントロールパネル上に表示される名前で、「コンテナレジストリ名」は後でイメージの送信や AppRun でのイメージ取得先として指定します。

操作確認画面では「作成」をクリックします。
ステータスが「成功」になれば「閉じる」をクリックします。
その後、画面左メニューの「コンテナレジストリ」をクリックすると、レジストリが作成されているのが分かります。
D-2. コンテナレジストリの認証(ユーザ追加)設定
レジストリ名をクリックし、「ユーザ」のタブをクリックします。それから、右下に「追加」ボタンがありますので、クリックします。
それから「ユーザ名」と「パスワード」を入力し、「作成」をクリックします。
画面上にユーザが作成されているのを確認します。
D-3. コンテナレジストリにログイン
再び SSH で接続中のサーバに戻り、 docker login [コンテナレジストリのホスト名] コマンドで、先ほどの認証情報を使ってログインします。
$ docker login [コンテナレジストリのホスト名]
Username: [ユーザ名]
Password: [パスワード]
Login Succeeded
たとえば sample00 という名前で作った場合、コンテナレジストリのホスト名は sample00.sakuracr.jp です。次のように「Login Succeeded」と出たら成功です。
実行例:
$ docker login sample00.sakuracr.jp
Username: demo
Password:
WARNING! Your credentials are stored unencrypted in '/home/ubuntu/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/
Login Succeeded
D-4. イメージの送信準備と送信
先ほど作成した Docker イメージを送信するには、 docker tag コマンドを使い、送信先のコンテナレジストリ名をイメージ名に含める必要があります。
- 現在のイメージ名とタグ「myapp:latest」
- 追加するイメージ名とタグ「コンテナレジストリのホスト名/myapp:latest」
以下はDockerイメージ myapp:latest に sample00.sakuracr.jp/myapp:latest タグを付ける例です。例のように 自分のコンテナレジストリ名 で置き換えてコマンドを実行します。
docker tag myapp:latest sample00.sakuracr.jp/myapp:latest
コマンド実行後、 docker images コマンドを実行すると、コンテナレジストリ名が付与されたイメージが見えます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp latest 1871bf0fbc3c 33 minutes ago 134MB
sample00.sakuracr.jp/myapp latest 1871bf0fbc3c 33 minutes ago 134MB
これで準備が整いましたので、 docker push 作成した新しいイメージ名とタグ コマンドを実行し、コンテナレジストリにアップロードします。
実行例:
$ docker push sample00.sakuracr.jp/myapp:latest
The push refers to repository [sample00.sakuracr.jp/myapp]
a588f7bce934: Pushed
8fac52c8cc1e: Pushed
95577337e4d3: Pushed
d4eb1fe7417b: Pushed
755063e06eb9: Pushed
8d4a4dec3291: Pushed
7fb72a7d1a8e: Pushed
latest: digest: sha256:609f1d5b2d68e08b38f08a056dcf6263952d76f2176dea20f02197ec471f9df8 size: 1783
ここでアップロードしたイメージ名 例:sample00.sakuracr.jp/myapp:latest は、この後の AppRun のアプリケーション実行時に使いますので、エディタ等に控えておきます。
E. AppRun でアプリケーションの実行
E-1. AppRunのアプリケーション作成と実行
AppRun のコントロールパネルを開きます。
開いたら「アプリケーション作成」ボタンがあるので、クリックします。
それから、以下の項目を指定します。
- アプリケーション名:
myapp - ポート設定:
8000 - コンテナイメージ: 例:
sample00.sakuracr.jp/myapp:latest※先ほど自分でレジストリにアップロードしたイメージ名 - コンテナレジストリアクセス設定:ユーザ名、パスワード ※コンテナレジストリ作成時に準備したユーザ情報
これらを指定したあと、画面右下の「作成する」ボタンをクリックします。
ステータスが「正常」になれば、アプリケーションの作成完了です。
「公開URL」をクリックすると、画面上に「Hello from AppRun!」が表示されます。
E-2. トラブルシューティング
うまくいかない場合は・・・・
実行後の「アプリケーション構成を変更してデプロイ」ボタンを押すと、再度設定内容を確認できます。レジストリ名があっているかどうかや、ポート番号指定、認証情報(ユーザ名、パスワード)が正しいかどうか確認します。
レジストリの指定が上手くいかない場合 registry-example2.sakuracr.jp/my-app:latest をご利用ください。ユーザ名、パスワードの指定が不要なサンプルリポジトリです。






