Docker のコマンドを覚える

dev

コンテナ環境にしたいよねって今ではスタンダードになってきており、プライベートでも仕事でも Docker を使っているが、基本的なコマンドをググっては忘れ、ググっては忘れしている。チートシート作ろ。。。

コンテナ構築

Dockerfile からイメージを作成する

  • docker build -t IMAGE_NAME .: カレントディレクトリにある Dockerfile を元にイメージを作成する
  • docker images でイメージが作成されていることを確認する

イメージからコンテナを起動する

  • docker run -it IMAGE_NAME: イメージからコンテナを起動
  • docker start [CONTAINER ID | CONTAINER NAME] でコンテナを起動することもできる

コンテナ停止

  • docker stop

メンテナンス

Docker イメージを削除してディスク容量を確保する

docker images を実行するとイメージが増え続けていることに気づくだろう。いつの間にか容量を使っている。使ってないものは消しても問題ないのでバンバン消していきたい。イメージを使ってるコンテナがあるとイメージを削除できないからコンテナの削除もできるようになっておく。

コンテナ確認

  • docker ps: 動いているコンテナを一覧
  • docker ps -a: 停止してるものも含めてコンテナを一覧

コンテナ削除

  • docker rm [CONIAINER ID]: コンテナIDを指定して削除

イメージ確認

  • docker images

イメージ削除

  • docker rmi [IMAGE ID]: イメージIDを指定して削除。コンテナが残ってるとエラーがでる。--force, -f で強制的に削除できるがコンテナは残る

トラブルシューティング

エラー: Is the docker daemon running?

Docker が正しく認識されていないときに発生。Docker Desktop は起動しているように見えたが上記エラーが発生してどのコマンドも使えなかった。

直接の原因は判明していない。マシンの再起動で使えるようになった。

Please select the geographic area in which you live.

ubuntu:latest を使って docker build したとき、下記のようなメッセージが出て処理が一向に進まなくなった。タイムゾーンの設定を行う場面ではあるが、ビルド中はコマンド入力を受け付けないので先に進むことができない。

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa        6. Asia            11. System V timezones
  2. America       7. Atlantic Ocean  12. US
  3. Antarctica    8. Europe          13. None of the above
  4. Australia     9. Indian Ocean
  5. Arctic Ocean  10. Pacific Ocean
Geographic area:

ビルドは中断して、事前にタイムゾーンの設定を行った上で再度ビルドしたら解決した。Dockerfile に下記を追記してタイムゾーンを設定できる。

ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezo

エラー: libc6 (>= 2.28) but 2.23-0ubuntu11.3 is to be installed

ubuntu:16.04 を指定していて nodejs v18 をインストールしようとしたときに発生した。libc6 というライブラリのバージョン不一致によるエラー。

バージョンが新すぎてエラーが出ている記事を見かけたが、上記パターンは見つからなかった。ベースイメージを ubuntu:latest にすることで解消した。

タイトルとURLをコピーしました