普段はdocker-composeで操作していても、たまに使い捨てコンテナを扱いたい時がある。
そんな時にdockerコマンドだけで済ませる方法。
dockerイメージの作成、コンテナ起動、コンテナのシェル操作、コンテナ削除の説明。
Dockerfile
amazonlinuxの最新を取得して、最低限のコマンドを入れる
FROM amazonlinux:latest RUN yum update -y && yum install -y \ less \ procps \ net-tools
build
Dockerfileを置いて、それを元にタグ名 ichi/awslinux を起動
docker build -t ichi/awslinux:1.0 .
コンテナ起動
nameオプションでコンテナの名前をつける。 最後にプロセスが終了しないようにtail -f
を使ってコンテナを起動し続ける。
docker run -d --name ichi-awstest ichi/awslinux:1.0 tail -f /dev/null
docker ps
動いているコンテナを表示するには、 docker ps
を使う。
ビルドして動作していない、もしくは動作終了したコンテナまで表示するには docker ps -a
を使う。
コンテナにログイン
コンテナ名を指定してbashを起動する。これでコンテナの中のシェルが操作できる。
docker exec -it ichi-awstest bash
コンテナ削除
コンテナを停止し、docker rm
でコンテナ削除。 image rm
でビルドしたイメージを削除。
docker stop ichi-awstest docker rm ichi-awstest docker images docker image rm ichi/awslinux:1.0
終了済みコンテナの削除
docker rm `docker ps -a -q --filter 'status=exited'` イメージ名で削除(この例ではeclipse-testイメージ) docker rm `docker ps -a -q --filter ancestor=eclipse-test`
https://docs.docker.jp/engine/reference/commandline/ps.html
Dockerfileを使わない場合
docker pull node:8.9.4-alpine docker run -d --name node-alpine -it node:8.9.4-alpine 上記--nameでコンテナ名を指定していない場合は自動で付与されるため docker ps のNAMESにある名前を使う docker exec -it node-alpine /bin/sh