コンテナ環境にしたいよねって今ではスタンダードになってきており、プライベートでも仕事でも 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
にすることで解消した。