在为自己拉取任何图像之前,如何让 docker 机器从主机获取图像?
How can I make docker machine to get images from host before pulling any image for itself?
我发现每次我在新机器上创建容器时,它都会从 docker 集线器中拉取图像。我在网上搜索过,但没有找到格式正确的结果。我已经从主机上的集线器中提取了图像。现在我的问题是如何让 docker 机器在将任何图像拉入 virtualbox 之前检查主机图像位置?我希望机器从主机的默认位置共享和保存图像,这样我就可以在多台机器之间共享图像,而无需从每台机器的注册表中提取图像
在 new 机器中,意味着新的 VM,docker 确实会将图像从 docker hub 拉到本地 VM docker图片存放路径:
/var/lib/docker/images
每台新机器都有自己的图像缓存。
如果你想在机器之间共享图像,你需要一台充当你的私有注册表,它有自己的证书来启用 https 访问。
查看 key/certificate 代的 example here, using gen_ssl_key_and_crt.sh
:
./gen_ssl_key_and_crt.sh
if [[ "$(docker inspect -f {{.State.Running}} registry 2> /dev/null)" == "" ]]; then
docker run -d -p 5000:5000 --restart=always --name registry \
-v $(pwd)/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/key \
registry:2
fi
然后您的另一台机器可以从该注册表中拉取,速度要快得多,并且只会从 docker 集线器中拉取一次,第一次看到它在自己的注册表中没有图像时。
if [[ "$(docker images -q kv:5000/b2d/git:2.8.1 2> /dev/null)" == "" ]]; then
docker pull kv:5000/b2d/git:2.8.1
fi
有关更简单的解决方法,请参阅:
我发现每次我在新机器上创建容器时,它都会从 docker 集线器中拉取图像。我在网上搜索过,但没有找到格式正确的结果。我已经从主机上的集线器中提取了图像。现在我的问题是如何让 docker 机器在将任何图像拉入 virtualbox 之前检查主机图像位置?我希望机器从主机的默认位置共享和保存图像,这样我就可以在多台机器之间共享图像,而无需从每台机器的注册表中提取图像
在 new 机器中,意味着新的 VM,docker 确实会将图像从 docker hub 拉到本地 VM docker图片存放路径:
/var/lib/docker/images
每台新机器都有自己的图像缓存。
如果你想在机器之间共享图像,你需要一台充当你的私有注册表,它有自己的证书来启用 https 访问。
查看 key/certificate 代的 example here, using gen_ssl_key_and_crt.sh
:
./gen_ssl_key_and_crt.sh
if [[ "$(docker inspect -f {{.State.Running}} registry 2> /dev/null)" == "" ]]; then
docker run -d -p 5000:5000 --restart=always --name registry \
-v $(pwd)/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/key \
registry:2
fi
然后您的另一台机器可以从该注册表中拉取,速度要快得多,并且只会从 docker 集线器中拉取一次,第一次看到它在自己的注册表中没有图像时。
if [[ "$(docker images -q kv:5000/b2d/git:2.8.1 2> /dev/null)" == "" ]]; then
docker pull kv:5000/b2d/git:2.8.1
fi
有关更简单的解决方法,请参阅: