各コマンドの関係は、以下のような感じです。
docker pull
docker pull
は、「みんながイメージをアップしている場所」から自分のPCにイメージをダウンロードしてくるコマンド。
例えば
docker pull ubuntu:20.04
とすると、Ubuntuの20.04のイメージを取ってこれます。
「どこからイメージをダウンロードするか」も指定できますが
何も指定しなければDocker Hub というDockerが公式に用意している「みんながイメージをアップしている場所」から自分のPCにダウンロードされるようになってます。
なので上のコマンドは「Docker Hubからubuntuの20.04のイメージをダウンロードしてくる」という意味になります。
自分がほしいOSがあるかどうかは、Docker Hubで探せばいい。
:20.04
の部分はタグ名。Docker Hub のサイトを見てみると何となくどういう概念か理解できると思いますが、タグという形でバージョン管理をしています。
docker run
docker run
は、イメージからコンテナを作り出して動かすコマンド。
手元にないイメージを指定した場合は、同時にpull
も行ってくれます。
例えば
docker run --name testdayo ubuntu:18.04
とすると、ubuntuのバージョン18.04のイメージをtestdayo
というコンテナ名で動かすことができます。(もしubuntuのバージョン18.04のイメージが手元になかった場合は勝手にpull
も行われる)
docker commit
docker commit
は、コンテナをイメージとして保存するコマンド。
例えば
docker commit testdayo hoge:1.0
とすると、手元にあるtestdayo
というコンテナをhoge:1.0
というイメージ名で保存できます。
後ろに付いている:1.0
の部分はタグ名といいます。
docker push
docker push
は、コンテナをレジストリ(デフォルトはdocker hub)に登録するコマンド。
例えば
docker push userid/unkdayo:1.0
とすると、手元にあるsername/unkdayo:1.0
というコンテナをdocker hubに登録できます。
dockerhubに登録する際のコンテナ名は
ユーザーID/イメージ名:タグ名
という形じゃないとダメ。
例えば、dockerhubに登録しているユーザー名がhoge
なら、hoge
/イメージ名:タグ名じゃないとpushに失敗します。
あとpush
を行う前に
docker login
と入力して、dockerhubにログインする必要があります。
docker build
以下のように打つと、「カレントディレクトリのDockerfile
を参考にしてhoge
というイメージをbuild
する」みたいな意味になります。
docker build -t hoge .
長くなるので別記事にしました↓。
参考:docker buildコマンドとは?ビルドコンテキストとは
docker prune
イメージ、コンテナ、ボリュームを一括削除する方法。
#「タグを持っていない&コンテナが使用していない」なイメージをすべて削除する docker image prune #停止しているコンテナをすべて削除する docker container prune #どのコンテナからも使用されていないvolumeを削除する docker volume prune #使用されていないネットワークを削除する docker network prune #停止コンテナ・未利用イメージ・未利用ボリューム、未使用ネットワークを一括削除する (※Docker 17.06.1 以上からボリュームを削除したい場合は、 --volumes フラグも必要) docker system prune
-f
オプション:- 「本当に削除しますか?」みたいな確認をされなくなる
-a
オプション:- build キャッシュや中間イメージ(タグのないイメージ)も全部消す
つまり
docker system prune -af --volumes
と書くと、問題無用でDockerの全データを強制削除できます。(Docker 17.06.1以降)
prune
という英単語は「余分な枝を切り落とす」みたいな意味があるらしく、
転じて「使用されていないデータを削除する」みたいなニュアンスがあるらしい。
「タグを持っていない」というのは、新しいイメージが古いイメージのタグを奪ってしまった場合など。
参考:Dockerで none なイメージを一括で削除するワンライナー – Qiita
余談:Windowsターミナルが使いやすい
Windowsでdockerにログインする際のターミナルソフトは
「Windowsターミナル」というソフトがオススメです。
Windowsで従来使われてきた
- PowerShell
- コマンドプロンプト
などと比較して
- 見やすいフォントがデフォルトで設定されている
- オープンソースで開発が進められているらしく、今後ユーザーの要望を取り入れた機能がどんどん追加されていく可能性が高い
という感じで、ターミナルソフトとしての使いやすさも将来性も大です。
VScodeを使っている場合は、VScodeのターミナルを使ったほうが良いですが。。
おわり
コメント