Open2

docker-composeではなくDocker単体を使って簡単に実験する

oratakeoratake

もともとそういう使われ方をするものだったのだと思うが、ちょっとimage引っ張ってきてちょっといじって捨てられる環境というノリでdockerを使いたい

その需要が発生した経緯

  • GCP(GAE)のデプロイをgcloudコマンド(GCP SDK)でやっている途中に、アップロード中にもかかわらず Segmentation fault と吐いてプロンプトが落ちるという事態が発生
  • 助言をいただくとメモリたりなかったのでは?というお話
  • 家に帰って実験してみたいので、DockerコンテナならVM立てるより簡単にメモリ絞ってデプロイの実験とかできるかも
    • 公式のUbuntuベースのgcloudが入ったコンテナがあったので、これを使ってみる

※ちなみにGCP SDKについては結果としてはSDKが必要としているPythonのバージョンが2系で古かったために発生していた。2系の最新 or 3系にすると解消したので以下内容はあまりいらなかったかもしれない。

oratakeoratake

コンテナのpullと起動

gcloudコンテナをpullしてメモリを少なくして起動

$ docker run -d --name=gcloud-sdk -v `pwd`:/code -w /code -m=6m gcr.io/google.com/cloudsdktool/cloud-sdk:latest

-d: detached
--name: コンテナ名をつけてrun
-m: メモリをmax 6mb
-v: volume mount pwdをコンテナ内の /code にマウント
-w: working directory
即コンテナを落とす場合は --rm も併記

コマンド実行

shellを立ち上げる

$ docker exec -it コンテナ名 コマンド

-it: shellへの入力を標準入力につなげる(コンテナ内のshellで入力できるようにする)
コンテナ名(name) コマンド: bashもしくは/bin/bashなどで指定したコンテナのshellを開く
ちょっと -it の理解があいまい

コンテナ停止時に起動する

$ docker start コンテナ名

コンテナの停止

$ docker stop コンテナ名

コンテナ、イメージの削除

コンテナの削除

$ docker rm コンテナ名

イメージの削除

$ docker rmi イメージ名

参考

https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes-ja