Play with Dockerというサービスは知っていますか?私は恥ずかしながら先日知りました🥲

初心者向けにDockerをテーマで数回ぐらいのハンズオンをしようと考えていたのですが、参加者のPCのにDockerをインストールしてもらうのが結構ハードル高いんですよね。Play with Dockerを使えば、ブラウザだけでDockerを試せるので、非常に便利だなと感じました。「Dockerに興味はあるけど、いきなり自分のPCに入れるのはちょっと...」という方にピッタリではないかと思います。
今回はどれくらいのことができるのかなと試してみたことについて、書いてみました。
Play with Dockerってなに?
Play with Docker(以下PWD)は、ブラウザ上でDockerを試せる無料の学習環境となります。Docker公式が提供しているサービスで、面倒なインストール作業は一切不要。時間限定とはなりますが、ブラウザさえあれば、すぐにDockerを体験できます。
インフラ周りはDocker-in-Docker(DIND)という技術で動作していて、複数のノード(仮想マシン的なもの)を作ることもで可能です。Dockerの基本を学ぶには最適な環境と言えるでしょう。
⚠️ 使う前に知っておいてほしいこと
PWDはあくまで学習用のサービスです。以下の制限があるので頭に入れておいてください。
- セッションは約2時間で自動削除される(以前は4時間だったらしい)
- 作れるインスタンス数に上限がある(だいたい5つくらい)
- 大事なデータは絶対に保存しない
あくまで「試しに触ってみる」「学習する」という用途で使いましょう。本番環境のつもりで使っちゃダメです💦
PWDを始めてみよう!
1)PWDにアクセスしてログイン
まずはDocker公式のPlay with Dockerページにアクセスします。
https://www.docker.com/play-with-docker/
ページ内にあるLab Environmentエリアにある【Get Started】ボタンを押すと、labs.play-with-docker.com に移動します。

ログインにはDocker Hubアカウントを使うことができます。Docker Hubアカウントを持っていない人は、この機会に作っておくと良いでしょう😊今後Dockerを使っていく上で必要になることが多いと思います。
ログインを行うと【Login】ボタンが

【Start】ボタンに切り替わります。

2)インスタンスを作成する
【Start】ボタンを押すと、左側のペインに残り時間のタイマーとともに【ADD NEW INSTANCE】というボタンが表示されます。これをクリックします。

すると、画面にターミナル(黒い画面)が出てきます。ここにDockerコマンドを打ち込んでいくわけですね。この画面が出たら準備完了です!

👉️コピペがうまくいかない時
ブラウザによっては、普段使っている Ctrl+V でペーストができないことがあります🥲 Windowsをお使いの方は【Shiftキー+Insertキー】を試してみてください。これでうまくいきます。
地味にハマるポイントなので、最初に知っておくとストレスが減ります。
3)最初の一歩:Webコンテナを動かしてみよう
環境ができたら、さっそくDockerコンテナを動かしてみましょう。まずは「動いた!」という体験を最速でしたいですよね。
ターミナルに以下のコマンドを入力して【Enter】キーを押下してください。
$ docker run -d -p 8080:80 docker/welcome-to-docker

初回はイメージのダウンロードが走るので少し待ちます。完了すると、画面上部に 8080 というリンクが表示されます。
これをクリックしてみてください。Congratulationsのメッセージが書かれたWebページが開けば大成功です!

たった1行のコマンドで、Webサーバーが動いているコンテナを起動できました。これがDockerの手軽さです。
4)これだけは覚えておきたい基本コマンド
Dockerにはたくさんのコマンドがありますが、最初に覚えておくべきものは意外と少ないです。
4-1)コンテナの状態を確認する
$ docker ps # 今動いているコンテナを表示 $ docker ps -a # 停止しているコンテナも含めて表示 docker images # ダウンロード済みのイメージ一覧

docker ps は本当によく使います。「あれ、今なにが動いてるんだっけ?」となったらこれを打ちましょう😊
4-2)ログを見る・コンテナの中に入る
$ docker logs <CONTAINER_ID> # コンテナのログを表示 $ docker exec -it <CONTAINER_ID> sh # コンテナの中に入る
<CONTAINER_ID> の部分は、docker ps で表示されるIDに置き換えてください。IDは全部打たなくても、最初の数文字だけでOKです。
コンテナの中に入ると、Linux環境が広がっています。ls や cat などのコマンドで中を探検できますよ。
コンテナから出るときは、exit コマンドを使います。
4-3)コンテナを止める・削除する
起動したコンテナを止めたり削除したりするには、以下のコマンドを使います。
$ docker stop <CONTAINER_ID> # コンテナを停止 $ docker rm <CONTAINER_ID> # コンテナを削除 $ docker rmi <IMAGE_ID> # イメージを削除
使い終わったコンテナはこまめに片付ける習慣をつけておくと良いと思いますが、時間制限があるのであまり気にせず不要な場合のみ消すという方向でいいと思います。
5)自分でDockerイメージを作ってみよう
最初は既存のイメージを使ってきましたが、次は自分でイメージを作ってみましょう。シンプルなPythonスクリプトを動かすイメージを作ります。
5-1) 作業用フォルダを作る
$ mkdir myapp && cd myapp
5-2) Pythonのコードを作成
作成するコンテナで動かすPythonのプログラムを作ります。
$ cat > app.py <<'EOF'
print("Hello from container!")
EOF
これで app.py というファイルができました。中身はシンプルにHello from container!と表示するだけのプログラムです。
5-3) Dockerfileを作成する
Dockerfileは「このイメージをどう作るか」を書いたレシピみたいなものです。今回の内容を簡単に説明すると、Python 3.12の軽量版イメージをベースに、作業ディレクトリを /app に設定、app.py をコピーして、最後にPythonで実行する、という流れになっています。
$ cat > Dockerfile <<'EOF' FROM python:3.12-slim WORKDIR /app COPY app.py . CMD ["python", "app.py"] EOF
5-4) ビルドして実行!
$ docker build -t myapp:1 . $ docker run --rm myapp:1
Hello from container!と表示されました!

これで イメージを自分で作って実行する という一連の流れを体験できました。 ここまでできれば、PWDの基本的な使い方はバッチリです。
6)Docker Composeも試してみよう
ここまでで終わってもよいのですが、おまけとして複数のコンテナをまとめて管理ができるDocker Composeについても行ってみましょう。PWDの環境でも複数のコンテナを扱えるのが個人的には驚きでした🤩
webサーバーであるNginxを立ち上げるシンプルな例を試してみます。
$ cd ~
$ mkdir compose-test && cd compose-test
$ cat > compose.yml <<'EOF'
services:
web:
image: nginx:alpine
ports:
- "8888:80"
EOF
$ docker compose -f compose.yml up -d
起動したら、画面上部の 8888 をクリック。NginxのWelcome to nginx!ページが表示されればOKです。

終わるときはこちらのコマンドを実行してください。
$ docker compose -f compose.yml down
7)片付けとセッション終了
PWDを使い終わったら、きちんと片付けましょう。
- インスタンスは画面の【DELETE】ボタンで削除できます
- セッション全体は【CLOSE SESSION】で終了
- 👉️放っておいても一定時間で自動的に消えます

まあ学習用なので、そこまで神経質にならなくても大丈夫です🤗
おわりに
今回はブラウザだけでDockerを体験できるPlay with Dockerを紹介しました。 PWDの良いところをまとめると以下の通りです。
- インストール不要でDockerを試せる
- 基本的なコマンドを実際に動かして学べる
- 自分でイメージを作ることもできる
- Docker Composeも扱える
注意が必要なのは、以下の2点です。
- 起動環境のメモリやストレージのサイズに制限がある
- サーバープロセスを起動するとHTTPSではなく、HTTPで起動する。
Ollamaなどのサイズの大きなコンテナを動かそうとすると資源不足で失敗します。そういった場合には、若干の手間はかかりますがGitHub Codespacesを使用するのがいいかもしれません。また、Webサービスを起動するようなプロセスではHTTPSではなくHTTPでの起動になってしまいます。そういう場合にもGitHub Codespacesを使用するのがよいと思います。
「Dockerってよく聞くけど、なんだか難しそう...」と思っている方は、ぜひPWDから触ってみてください。 実際に手を動かしてみると、理解がグッと深まりますよ😊