Docker 怎么跳过本地安装官方的镜像?
PHP中文网
PHP中文网 2017-04-24 16:00:40
0
2
750

我本地下载了一个 MySql 镜像,想安装官方的。
docker pull mysql 后它老自动把本地的给装上去了。

删除本地的mysql docker rmi -f mysql
docker images 查看确实没了,但是
再次 docker pull mysql,发现安装的还是之前的那个……

怎么跳过本地的 MySql ,安装官方的镜像啊? 谢谢

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(2)
洪涛

Existe-t-il un conteneur utilisant cette image MySQL ? Ou avez-vous docker tagrecréé cette image ? Ou utiliser d'autres versions du miroir MySQL ? Ou utilisez-vous une image basée sur debian:jessie ?

Sachez qu'une image n'est pas un fichier unique, mais un ensemble de couches de stockage. Lorsque vous exécutez docker rmi -f mysql, vous supprimez en fait le mysql:latest ce tag, donc la première ligne est généralement Untagged: mysql:latest.

La logique suivante est que s'il n'y a pas d'autre tag pointant vers la couche de stockage, la couche de stockage sera effectivement supprimée, puis continuera à demander si la couche de stockage suivante est toujours utilisée et ne le sera pas. continuez à le supprimer jusqu'à un certain temps. Si la couche détecte qu'il existe des conteneurs ou des images qui dépendent de la couche de stockage, la suppression s'arrêtera. Ainsi, lorsque vous exécutez docker rmi, vous pouvez observer combien de Deleted: sha256: ... apparaissent. C'est le nombre de calques qui ont été supprimés, et les autres n'ont pas été supprimés.

Donc, si vous docker tag réinstallez cette image mysql, alors lorsque vous exécutez docker rmi, seule l'opération untag sera exécutée et la couche de stockage ne sera pas réellement supprimée.

Ou s'il y a d'autres images dans le système qui sont basées sur la même image de base debian:jessie, alors docker rmi sera uniquement supprimée de ce calque et s'arrêtera à chaque fois dans le futur, pull démarrera également. de cette couche.

De même, ce concept de stockage à plusieurs niveaux aura également un impact sur votre docker pull. Lorsque vous exécuterez docker pull, vous vérifierez la valeur de contrôle de chaque couche du docker:latest officiel, puis la comparerez localement pour voir lesquelles existent déjà. Si elles existent, l'extraction ne sera pas répétée et la couche de stockage actuelle. sera utilisé directement. S'il n'existe pas, tirez-en un nouveau.

Prenons l'exemple de tout à l'heure si vous re-docker tag re-tag l'mysql:latest image avant, alors docker rmi n'a en fait pas supprimé l'image, et lorsque vous docker pull mysql recommencerez, vous le ferez find all La couche de stockage est disponible localement, il n'est donc pas nécessaire de la récupérer à nouveau. Remplacez simplement le niveau supérieur tag par mysql:latest. Il n'y a pas lieu de s'inquiéter de cette situation, et il n'est pas nécessaire de forcer un nouveau téléchargement, car sha256sum peut assurer la cohérence du fichier image et du site officiel.

Votre question doit donc dépendre de la situation spécifique. De manière générale, il n'est pas recommandé d'utiliser la balise latest dans un environnement de production, mais de préciser clairement la version afin que les mises à niveau et la maintenance soient possibles.

给我你的怀抱
docker pull docker.io/mysql
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal