Use Docker command line client
docker コンテナ実行
docker run [image]
image = docker hubなどにあるもの
e.g.) hello-world
docker コンテナ実行(インタラクティブモード)
docker run -t -i [image] [cmd]
e.g.) docker run -t -i ubuntu /bin/bash
docker コンテナ実行(background + Port開放 + name割当)
docker run -d -P --name hello-world-app training/webapp python app.py
---
-dはdeamon(background)
-Pはネットワークポートの開放(自動割当)
--nameは名前の割当
---
docker ps で確認されて割り当てられたポートで内部からアクセスできる
e.g.)curl http://localhost:<port>/
docker コンテナ実行(background + Port開放 + name割当)
docker run -d -p 80:5000 --name webapp training/webapp python app.py
---
-pオプションはポート番号を手動で割り振れる
---
docker ps で確認されて割り当てられたポートで内部からアクセスできる
e.g.)curl http://localhost:80/
実はこれでもう80番ポートを開放しているので外部からアクセスできる(httpは80番なので、80を省略)
e.g.)http://[このサーバーのグローバルIP]/ ←これでブラウザからアクセス可能
docker コンテナ停止
docker stop -t 0 [name]
nameはimage_nameではなく、docker_psでみれるname
-t は停止までの時間。指定しなければ10, 0だと即時終了
docker コンテナ実行中確認
docker ps
docker コンテナ一覧確認(未実行含む)
docker ps -a
docker image 削除
docker rm [image_layer_name]
image_layer_name = docker ps -a 出てくるもの
docker image 取得
docker image pull [image_name]
e.g.) docker image pull ubuntu
docker image 取得(特定のver)
docker image pull [image_name]:[version]
e.g.) docker image pull ubuntu:14.04
docker image一覧
docker image ls
docker image 調査
docker inspect [name]
docker image 調査(フィルター)
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [name]
docker exec(既に起動しているコンテナにコマンド実行)
docker exec [name] ps aux
これだと ps auxを実行させる
docker exec(既に起動しているコンテナにコマンド実行をインタラクティブモードで)
docker exec -it [name] bash
root@249476631f7d:/opt/webapp# ps aux
docker ファイルコピー
docker cp [origin] [copy]
e.g.) docker cp webapp:/opt/webapp/app.py .
この場合、webappのコンテナの中にあるapp.pyをlocalにコピー
---
e.g.)docker cp app.py webapp:/opt/webapp/
この場合、localにあるapp.pyをwebappのコンテナの指定の場所にコピー
その他
Persisted Volume
accessModes
PVのアクセスモードを指定する。アクセスモードは現在以下の3種類。
ReadWriteOnce : 単一Nodeで読み書きが可能
ReadOnlyMany : 複数Nodeで読み込みが可能
ReadWriteMany : 複数Nodeから読み書きが可能