我本地下载了一个 MySql 镜像,想安装官方的。docker pull mysql 后它老自动把本地的给装上去了。
docker pull mysql
删除本地的mysql docker rmi -f mysqldocker images 查看确实没了,但是再次 docker pull mysql,发现安装的还是之前的那个……
docker rmi -f mysql
docker images
怎么跳过本地的 MySql ,安装官方的镜像啊? 谢谢
认证高级PHP讲师
この mysql イメージを使用するコンテナはありますか?それとも、イメージを docker タグ で再設定しましたか?それとも他のバージョンの mysql ミラーを使用しますか?それとも debian:jessie ベースのイメージを使用していますか? docker tag过这个镜像?或者使用其它版本的mysql镜像?或者在使用基于 debian:jessie 的镜像?
docker タグ
debian:jessie
docker tag
要知道镜像并非单一文件,而是存储层的集合。当你执行 docker rmi -f mysql 的时候,实际上是删除 mysql:latest 这个 tag,因此第一行一般是 Untagged: mysql:latest。
mysql:latest
tag
Untagged: mysql:latest
接下来的逻辑是,如果没有其它tag指向该存储层,则会真实删除该存储层,然后继续查询下一层的存储层是否还有人在使用,没有继续删除,直到某一层发现还有容器或者镜像依赖该存储层,那么就停止删除。所以当你执行 docker rmi 的时候,可以观察一下出现了多少个 Deleted: sha256: ...,这就是删除了多少层,其它的并未删除。
docker rmi
Deleted: sha256: ...
那么假如你重新 docker tag 了这个mysql镜像,那么当你执行 docker rmi 的时候,只会执行 untag 的操作,而不会真的删除存储层。
untag
又或者系统有其它镜像是基于相同的基础镜像 debian:jessie 的,那么docker rmi 也只会删到这一层就停止了,以后每次 pull 也是从这层开始。
pull
同样,这种分层存储的概念也会影响你的 docker pull。 当你执行docker pull的时候,会查看官方 docker:latest 的每一层的校验值,然后到本地比对,看看哪些已经存在,如果存在就不重复pull,直接使用当前存储层,如果不存在则pull新的。
docker pull
docker:latest
拿刚才的假如你重新docker tag的例子,如果你之前重新tag过该 mysql:latest镜像,那么docker rmi实际上没有删除该镜像,而再次 docker pull mysql 的时候,发现所有存储层本地都有,那必然不需要再次 pull,直接将最顶层tag为 mysql:latest即可。这种情况无需担心,也不必强迫重新下载,因为sha256sum可以确保镜像文件和官网的一致性。
sha256sum
所以你的问题需要看具体情况是什么来说。一般来说,在生产环境不建议使用 latest
latest
Untagged: mysql:最新
タグ解除
タグ
タグは直接
リーリー
この mysql イメージを使用するコンテナはありますか?それとも、イメージを
docker タグ
で再設定しましたか?それとも他のバージョンの mysql ミラーを使用しますか?それともdebian:jessie
ベースのイメージを使用していますか?docker tag
过这个镜像?或者使用其它版本的mysql镜像?或者在使用基于debian:jessie
的镜像?要知道镜像并非单一文件,而是存储层的集合。当你执行
docker rmi -f mysql
的时候,实际上是删除mysql:latest
这个tag
,因此第一行一般是Untagged: mysql:latest
。接下来的逻辑是,如果没有其它
tag
指向该存储层,则会真实删除该存储层,然后继续查询下一层的存储层是否还有人在使用,没有继续删除,直到某一层发现还有容器或者镜像依赖该存储层,那么就停止删除。所以当你执行docker rmi
的时候,可以观察一下出现了多少个Deleted: sha256: ...
,这就是删除了多少层,其它的并未删除。那么假如你重新
docker tag
了这个mysql镜像,那么当你执行docker rmi
的时候,只会执行untag
的操作,而不会真的删除存储层。又或者系统有其它镜像是基于相同的基础镜像
debian:jessie
的,那么docker rmi
也只会删到这一层就停止了,以后每次pull
也是从这层开始。同样,这种分层存储的概念也会影响你的
docker pull
。 当你执行docker pull
的时候,会查看官方docker:latest
的每一层的校验值,然后到本地比对,看看哪些已经存在,如果存在就不重复pull,直接使用当前存储层,如果不存在则pull新的。拿刚才的假如你重新
docker tag
的例子,如果你之前重新tag
过该mysql:latest
镜像,那么docker rmi
实际上没有删除该镜像,而再次docker pull mysql
的时候,发现所有存储层本地都有,那必然不需要再次 pull,直接将最顶层tag
为mysql:latest
即可。这种情况无需担心,也不必强迫重新下载,因为sha256sum
可以确保镜像文件和官网的一致性。所以你的问题需要看具体情况是什么来说。一般来说,在生产环境不建议使用
イメージは単一のファイルではなく、ストレージ レイヤーのコレクションであることを知っておく必要があります。latest
docker rmi -f mysql
を実行すると、mysql:latest
tag
が実際に削除されるため、通常、最初の行はUntagged: mysql:最新
。 🎜 🎜次のロジックは、ストレージ レイヤーを指す他のtag
が存在しない場合、ストレージ レイヤーは実際に削除され、次のレイヤーのストレージ レイヤーがまだ使用されているかどうかのクエリを続行するというものです。特定のレイヤーがそのストレージ レイヤーに依存するコンテナーまたはイメージがあることを検出するまで、削除は続行されません。したがって、docker rmi
を実行すると、Deleted: sha256: ...
がいくつ表示されるかを確認できます。これは削除されたレイヤーの数であり、他のレイヤーは削除されていません。削除されました。 🎜 🎜そのため、mysql イメージに再度docker タグ
を付けた場合、docker rmi
を実行すると、タグ解除
操作のみが実行され、ストレージ層は実際には削除されません。 🎜 🎜 または、同じ基本イメージdebian:jessie
に基づく他のイメージがシステム内にある場合、docker rmi
はそれをこのレイヤーまで削除して、すべて停止します。将来のpull
もこのレイヤーから開始されます。 🎜 🎜同様に、この階層型ストレージの概念は、docker pull
にも影響します。docker pull
を実行すると、公式のdocker:latest
の各レイヤーのチェック値を確認し、ローカルで比較して、どのレイヤーが既に存在するかを確認します。存在する場合、プルは繰り返されず、現在のストレージ層が直接使用されます。存在しない場合は、新しいストレージ層がプルされます。 🎜 🎜今の例では、docker タグ
を再タグ
した場合、以前にmysql:latest
イメージを再タグ
した場合、docker rmi は実際にはイメージを削除しませんでしたが、docker pull mysql
を再度実行すると、すべてのストレージ層がローカルで利用可能であることが判明したため、再度プルする必要はありませんでした。最上位のタグは直接
であり、mysql:latest
です。sha256sum
によって画像ファイルと公式 Web サイトの一貫性が保証されるため、この状況について心配する必要はなく、強制的に再ダウンロードする必要もありません。 🎜 🎜したがって、あなたの質問は特定の状況に依存する必要があります。一般に、運用環境ではlatest
タグを使用することは推奨されませんが、アップグレードとメンテナンスが可能になるようにバージョンを明示的に指定することをお勧めします。 🎜リーリー