やったことの整理を含めてDockerコマンドのおさらいとして書きました
ECRのpushとかも書きました(ECRにリポジトリ作ったら手順は書いてあるものですが...)
コンテナ一覧表示と削除
- 現在起動中のコンテナの一覧表示
$ docker ps
★ 使うオプション
停止中を含め全てのコンテナの一覧を表示
$ docker ps -a
コンテナIDのみを表示
$ docker ps -q
停止中含め全てのコンテナのIDのみ表示
$ docker ps -aq
--filter(-f) でコンテナ情報を抽出して表示
停止中のコンテナ一覧を表示
$ docker ps -f "status=exited"
NAMESにmysqlを含むコンテナを表示(=としているが完全一致ではなく、含むものも抽出する)
$ docker ps -f "name=mysql"
- dockerコンテナの削除
$ docker rm [コンテナIDs]
★ 使うオプション
コンテナ起動中でも強制的に削除
$ docker rm -f xx1234xx56
コンテナと関連づけられたボリュームも削除
$ docker rm -v xx1234xx56
(volumeはコンテナのストレージでコンテナを削除しても消えない)
-
未使用のVolumeを一括削除したいとき
$ docker volume prune
-
使われていないコンテナの一括削除
$ docker container prune
イメージの構築と削除
- dockerイメージを構築する
$ docker build [path]
★ 使うオプション
イメージ構築時にキャッシュを使わない
$ docker build --no-cache .
(これを指定しないと、Dockerfileを更新してbuildしてもキャッシュから作られて反映されない)
build時にタグをつける
$ docker build -t [名前:タグ] .
- 構築したイメージにタグをつける
$ docker tag [イメージ名orイメージID] [ホスト名/イメージ名:タグ]
タグは何も指定しない場合はlatest
になる
$ docker tag 0011ea89b707 mysql:test1.0
$ docker tag mysql mysql:test2.0
★ Docker Hubにpush
Docker Hubにpushする用のイメージとタグはイメージ名:タグの前にユーザー名が必要
形式「ユーザー名/イメージ名:タグ」
$ docker tag mysql koni4/mysql:test3.0
Dockerにログイン
$ docker login
DockerHubにpush
$ docker push koni4/mysql:test3.0
★ ECRにpush
AWS ECRなどプライベートリポジトリの場合
$ docker tag mysql xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/mysql:test:4.0
AWSにECRのアクセス権限があるユーザーでログイン
$ aws ecr get-login-password --profile ecr-user | docker login --username AWS --password-stdin xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/mysql
AWS ECRにpush
$ docker push xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/mysql:test:4.0
- ローカルに保存したdockerイメージ一覧を表示
$ docker images
★ 使うオプション
タグ付けされていないイメージを表示
$ docker images -f "dangling=true"
(タグがnoneになっているものは基本的に使用していないゴミイメージ)
- ローカルに保存したdockerイメージを削除
$ docker rmi [イメージIDs]
★ 使うオプション
タグがnoneのイメージを一括削除
$ docker rmi $(docker images -f "dangling=true" -q)
-
使われていないdockerイメージの一括削除
$ docker image prune
-
使われていないコンテナ、イメージ、ネットワークを一括削除
$ docker system prune