これで使える!Play with Dockerの使い方(初級編)

これで使える!Play with Dockerの使い方(初級編)

前回の記事(解決!プログラミング環境は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画面の説明

PWD起動直後
PWD起動直後
インスタンス追加後
インスタンス追加後
EDITORクリック時
EDITORクリック時
スパナマーククリック時
スパナマーククリック時
歯車マーククリック時
歯車マーククリック時

ファイルのアップロード方法

一番簡単な方法は
ファイルをアップロードしたい場合は、アップロードしたいファイルをコンソールが表示されている領域にドラッグ&ドロップする。

それ以外の方法は、SCP/SFTPで転送する。

ファイルのダウンロード方法

ダウンロードする際は、SCP/SFTPでダウンロードする。
WinSCPを使用した場合の接続方法を紹介します。

接続先PWDインスタスのホスト名、ユーザー名の入力
接続先PWDインスタスのホスト名、ユーザー名の入力
SSH認証情報設定
SSH認証情報を設定

SSH接続方法

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

接続先PWDインスタンスのホスト名入力
秘密鍵ファイル指定
秘密鍵ファイル指定
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       受信したシグナルをプロセスに全てプロキシする 
attachコマンド使用例
attachコマンド使用例
【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のシンボルリンクをたどる
cpコマンド使用例
cpコマンド使用例
【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       コンテナ内の作業ディレクトリを指定する
execコマンド使用例
execコマンド使用例
【images】ローカルにあるDockerイメージの一覧を表示する。
Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]
Options:
  -a, --all             すべての画像を表示(デフォルトでは中間画像を非表示)
      --digests         ダイジェストを表示
  -f, --filter filter   提供された条件に基づいて出力をフィルタリングします
      --format string   フォーマット文字を使用して出力する
      --no-trunc        出力を切り捨てない
  -q, --quiet           数値IDのみを表示する
imagesコマンド使用例
imagesコマンド使用例
【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            合計ファイルサイズを表示する
psコマンド使用例
psコマンド使用例
【pull】Docer HubなどのDocerイメージ集積場所からイメージをローカルに取得する。
Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Options:
  -a, --all-tags                リポジトリ内のすべてのタグ付きイメージをダウンロードする
      --disable-content-trust   画像検証をスキップする
      --platform string         サーバーがマルチプラットフォーム対応の場合、
                                プラットフォームを設定する
  -q, --quiet                   冗長な出力を抑制する
pullコマンド使用例
pullコマンド使用例
【rm】コンテナを削除する。
Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]
Options:
  -f, --force     実行中のコンテナーを強制的に削除する(SIGKILLを使用)
  -l, --link      指定されたリンクを削除する
  -v, --volumes   コンテナーに関連付けられている匿名ボリュームを削除する
rmコマンド使用例
rmコマンド使用例
【rmi】ローカルにあるDockerイメージを削除する。
Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]
Options:
  -f, --force      イメージを強制的に削除する
      --no-prune   タグのない親は削除しない
rmiコマンド使用例
rmiコマンド使用例
【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                 コンテナ内の作業ディレクトリ
runコマンド使用例
runコマンド使用例
【start】停止中のコンテナを起動する。
Usage:  docker start [OPTIONS] CONTAINER [CONTAINER...]
Options:
  -a, --attach                  STDOUT / STDERRをアタッチして信号を転送する
      --checkpoint string       このチェックポイントから復元する
      --checkpoint-dir string   カスタムチェックポイントストレージディレクトリを使用する
      --detach-keys string      コンテナーを切り離すためのキーシーケンスをオーバーライドする
  -i, --interactive             コンテナのSTDINをアタッチする
startコマンド使用例
startコマンド使用例
【stop】コンテナを停止する。
Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER...]
Options:
  -t, --time int   停止するまで待機する秒数
stopコマンド使用例
stopコマンド使用例

Play with DockerにPython環境を作る

PWD上に以下のdockerコマンドを使用してPython環境を作成します。

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

【hello.pyファイル】

print("Hello world!")

Play with Dockerの使い方まとめ

PWD上にPython環境を作成するのにたった3つのdockerコマンドで環境を作成することが出来ました。(イメージ確認を除くとたった2つのdockerコマンド)

dockerコマンドには色々なコマンドがあるのですが、プログラミング学習環境を作るためであればわずかなコマンドを使うだけで環境構築ができます。

PWDは簡単に使える環境なので、まだPWDを使用した事がない人には一度触ってみることをおすすめします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA