前回の記事(解決!プログラミング環境はPlay with Dockerで決まり)で
Play with Docker(PWD)の紹介をしたので
今回は、Play with Docker(PWD)の簡単な使い方を紹介したいと思います。
※ここからPlay with DockerをPWDと記載します。
使い方の実例として Python が使える環境を紹介します。
- PWDを使ってみたいと思ってる人
- PWDを使い始めたばかりの人
- PWDの使い方がわからなかった人
目次
Play with Dockerの使い方
画面イメージとともに紹介していきます。
Play with Docker画面の説明





ファイルのアップロード方法
一番簡単な方法は
ファイルをアップロードしたい場合は、アップロードしたいファイルをコンソールが表示されている領域にドラッグ&ドロップする。
それ以外の方法は、SCP/SFTPで転送する。
ファイルのダウンロード方法
ダウンロードする際は、SCP/SFTPでダウンロードする。
WinSCPを使用した場合の接続方法を紹介します。


SSH接続方法
Tera Termを使用してSSHの接続方法を紹介します。
SSH接続もファイルダウンロードと同様に事前に公開鍵と秘密鍵を生成しておく必要があります。



Dockerコマンドについて
PWDで使用するdockerコマンドから良く使うものだけ抜粋して紹介します。
Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/root/.docker") -c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit Management Commands: app* Docker App (Docker Inc., v0.9.1-beta3) builder Manage builds checkpoint Manage checkpoints config Manage Docker configs container Manage containers context Manage contexts engine Manage the docker engine image Manage images manifest Manage Docker image manifests and manifest lists network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes Commands: attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container deploy Deploy a new stack or update an existing stack diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes
たくさんあるコマンドの中でよく使うのはこれから紹介するコマンドです。
【attach】コンテナ内で動作指定しているシェルに接続する。exitするとコンテナが停止する。 Usage: docker attach [OPTIONS] CONTAINER Options: --detach-keys string エスケープ・キー・シーケンスを設定 --no-stdin STDIN(標準入力)にアタッチしない --sig-proxy=true 受信したシグナルをプロセスに全てプロキシする

【cp】ローカルとコンテナ間でファイルをコピーする。 Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH Options: -a, --archive アーカイブモード(すべてのuid / gid情報をコピー) -L, --follow-link 常にSRC_PATHのシンボルリンクをたどる

【exec】コンテナ内でプログラムを実行する。プログラムを終了してもコンテナは終了しない。 Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Options: -d, --detach デタッチモード:コマンドをバックグラウンドで実行 --detach-keys string コンテナーを切り離すためのキーシーケンスをオーバーライドする -e, --env list 環境変数を設定する -i, --interactive 接続されていなくてもSTDINを開いたままにする --privileged コマンドに拡張特権を与える -t, --tty 疑似TTYを割り当てる -u, --user string ユーザー名またはUID(形式:(name | uid) [:(group | gid)]) -w, --workdir string コンテナ内の作業ディレクトリを指定する

【images】ローカルにあるDockerイメージの一覧を表示する。 Usage: docker images [OPTIONS] [REPOSITORY[:TAG]] Options: -a, --all すべての画像を表示(デフォルトでは中間画像を非表示) --digests ダイジェストを表示 -f, --filter filter 提供された条件に基づいて出力をフィルタリングします --format string フォーマット文字を使用して出力する --no-trunc 出力を切り捨てない -q, --quiet 数値IDのみを表示する

【ps】コンテナの一覧を表示する。 Usage: docker ps [OPTIONS] Options: -a, --all すべてのコンテナを表示(デフォルトでは実行中のみを表示) -f, --filter filter 提供された条件に基づいて出力をフィルタリングする --format string フォーマット文字を使用して出力する -n, --last int 最後に作成されたn個のコンテナを表示(すべての状態を含む) -l, --latest 最後に作成されたコンテナを表示(すべての状態を含む) --no-trunc 出力を切り捨てない -q, --quiet 数値IDのみを表示する -s, --size 合計ファイルサイズを表示する

【pull】Docer HubなどのDocerイメージ集積場所からイメージをローカルに取得する。 Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST] Options: -a, --all-tags リポジトリ内のすべてのタグ付きイメージをダウンロードする --disable-content-trust 画像検証をスキップする --platform string サーバーがマルチプラットフォーム対応の場合、 プラットフォームを設定する -q, --quiet 冗長な出力を抑制する

【rm】コンテナを削除する。 Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...] Options: -f, --force 実行中のコンテナーを強制的に削除する(SIGKILLを使用) -l, --link 指定されたリンクを削除する -v, --volumes コンテナーに関連付けられている匿名ボリュームを削除する

【rmi】ローカルにあるDockerイメージを削除する。 Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] Options: -f, --force イメージを強制的に削除する --no-prune タグのない親は削除しない

【run】Dockerイメージからコンテナを作成する。 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Options: --add-host list カスタムのホストからIPへのマッピングを追加する (host:ip) -a, --attach list STDIN、STDOUT、またはSTDERRに接続する --blkio-weight uint16 Block IO(相対ウェイト10から1000) 無効にするには0(デフォルトは0) --blkio-weight-device list Block IO ウェイト(デバイスの相対的なウェイト) --cap-add list Linux機能を追加する --cap-drop list Linux機能を削除する --cgroup-parent string コンテナの親cgroupを指定する --cidfile string コンテナIDをファイルに書き込む --cpu-period int CPU CFS(Completely Fair Scheduler)期間の制限 --cpu-quota int CPU CFS(Completely Fair Scheduler)の割り当てを 制限する --cpu-rt-period int CPUのリアルタイム期間をマイクロ秒で制限する --cpu-rt-runtime int CPUリアルタイムランタイムをマイクロ秒単位で制限する -c, --cpu-shares int CPUシェア(相対ウェイト) --cpus decimal CPUの数 --cpuset-cpus string 実行を許可するCPU(0-3、0、1) --cpuset-mems string 実行を許可するMEM(0-3、0、1) -d, --detach コンテナーをバックグラウンドで実行し、 コンテナーIDを出力する --detach-keys string コンテナーを切り離すためのキーシーケンスを オーバーライドする --device list コンテナにホストデバイスを追加する --device-cgroup-rule list ルールをcgroup許可デバイスリストに追加する --device-read-bps list デバイスからの読み取り速度(1秒あたりのバイト数)を 制限する --device-read-iops list デバイスからの読み取り速度(1秒あたりのIO)を 制限する --device-write-bps list デバイスへの書き込み速度(バイト/秒)を制限する --device-write-iops list デバイスへの書き込みレート(1秒あたりのIO)を 制限する --disable-content-trust イメージ検証をスキップ --dns list カスタムDNSサーバーを設定する --dns-option list DNSオプションを設定する --dns-search list カスタムDNS検索ドメインを設定する --domainname string コンテナNISドメイン名 --entrypoint string イメージのデフォルトENTRYPOINTを上書きする -e, --env list 環境変数を設定する --env-file list 環境変数のファイルを読み込む --expose list ポートまたはポートの範囲を公開する --gpus gpu-request コンテナーに追加するGPUデバイス (すべてのGPUを渡すには「all」) --group-add list 参加するグループをさらに追加する --health-cmd string ヘルスをチェックするために実行するコマンド --health-interval duration チェックの実行間隔(ms | s | m | h) (デフォルトは0s) --health-retries int ヘルスチェック異常を報告するために必要な連続した失敗 --health-start-period duration ヘルスリトライのカウントダウンを開始する前に コンテナを初期化する開始期間(ms | s | m | h) (デフォルトは0s) --health-timeout duration 1つのチェックの実行を許可する最大時間 (ms | s | m | h)(デフォルトは0s) --help ヘルプを表示する -h, --hostname string コンテナのホスト名 --init シグナルを転送してプロセスを取得するコンテナ内で initを実行する -i, --interactive 接続されていなくてもSTDINを開いたままにする --ip string IPv4アドレス(例 172.30.100.104) --ip6 string IPv6アドレス(例 2001:db8::33) --ipc string 使用するIPCモード --isolation string コンテナ隔離技術 --kernel-memory bytes カーネルメモリ制限 -l, --label list コンテナにメタデータを設定する --label-file list ラベルの行区切りファイルを読み取る --link list 別のコンテナへのリンクを追加 --link-local-ip list コンテナーIPv4 / IPv6リンクローカルアドレス --log-driver string コンテナーのロギングドライバー --log-opt list ログドライバーオプション --mac-address string コンテナのMACアドレス(例 92:d0:c6:0a:29:33) -m, --memory bytes メモリ制限 --memory-reservation bytes メモリのソフト制限 --memory-swap bytes スワップ制限はメモリとスワップに等しい '-1'は無制限のスワップを有効にする --memory-swappiness int コンテナーメモリのスワップを調整する(0から100) --mount mount コンテナーにファイルシステムのマウントをアタッチする --name string コンテナーに名前を割り当てる --network network コンテナーをネットワークに接続する --network-alias list コンテナのネットワークスコープのエイリアスを追加する --no-healthcheck コンテナ指定のヘルスチェックを無効にする --oom-kill-disable OOMキラーを無効にする --oom-score-adj int ホストのOOM設定を調整する(-1000〜1000) --pid string 使用するPID名前空間 --pids-limit int コンテナーPIDの制限を調整する (無制限の場合は-1に設定) --platform string サーバーがマルチプラットフォーム対応の場合、 プラットフォームを設定する --privileged このコンテナに拡張特権を与える -p, --publish list コンテナのポートをホストに公開する -P, --publish-all 公開されているすべてのポートをランダムなポートに 公開する --read-only コンテナーのルートファイルシステムを 読み取り専用としてマウントする --restart string コンテナの終了時に適用する再起動ポリシー --rm 終了時にコンテナを自動的に削除する --runtime string このコンテナに使用するランタイム --security-opt list セキュリティオプション --shm-size bytes /dev/shmのサイズ --sig-proxy プロセスへのプロキシ受信シグナル --stop-signal string コンテナーを停止する信号 --stop-timeout int コンテナーを停止するタイムアウト(秒単位) --storage-opt list コンテナーのストレージドライバーオプション --sysctl map Sysctlオプション --tmpfs list tmpfsディレクトリをマウントする -t, --tty 疑似TTYを割り当てる --ulimit ulimit Ulimitオプション -u, --user string ユーザー名またはUID (形式:(name | uid) [:(group | gid)]) --userns string 使用するユーザー名前空間 --uts string 使用するUTS名前空間 -v, --volume list ボリュームをバインドマウントする --volume-driver string コンテナーのオプションのボリュームドライバー --volumes-from list 指定されたコンテナからボリュームをマウントします -w, --workdir string コンテナ内の作業ディレクトリ

【start】停止中のコンテナを起動する。 Usage: docker start [OPTIONS] CONTAINER [CONTAINER...] Options: -a, --attach STDOUT / STDERRをアタッチして信号を転送する --checkpoint string このチェックポイントから復元する --checkpoint-dir string カスタムチェックポイントストレージディレクトリを使用する --detach-keys string コンテナーを切り離すためのキーシーケンスをオーバーライドする -i, --interactive コンテナのSTDINをアタッチする

【stop】コンテナを停止する。 Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...] Options: -t, --time int 停止するまで待機する秒数

Play with DockerにPython環境を作る
PWD上に以下のdockerコマンドを使用してPython環境を作成します。
- pull
- images
- run
- pullコマンドでPython環境のイメージをローカルに取得
docker pull python - imagesコマンドでローカルにイメージがあるか確認
docker images - runコマンドでPythonコンテナを実行
docker run -it –rm –name my-python -v “$PWD”:/usr/src/myapp -w /usr/src/myapp python /bin/sh - hello.pyファイルを自分のパソコンからPWDにアップロード
python.pyファイルをドラッグ&ドロップ - hello.pyを実行して動くことを確認
python hello.py

【hello.pyファイル】
print("Hello world!")
Play with Dockerの使い方まとめ
PWD上にPython環境を作成するのにたった3つのdockerコマンドで環境を作成することが出来ました。(イメージ確認を除くとたった2つのdockerコマンド)
dockerコマンドには色々なコマンドがあるのですが、プログラミング学習環境を作るためであればわずかなコマンドを使うだけで環境構築ができます。
PWDは簡単に使える環境なので、まだPWDを使用した事がない人には一度触ってみることをおすすめします。