我的应用程序使用redis,couchDB,nodejs等多种技术......
我从docker hub(例如redis)和其他一些(例如我的nodejs应用程序)中获取的一些内容存放在我自己的服务器上的docker repo中。
现在,将完整应用程序部署到远程系统的最简单方法是什么?
如果我可以使用一个docker-compose.yml并运行docker-compsoe up -d
会很棒,但我认为这不会起作用,因为我使用的是我自己的docker repo中的图像。所以我首先必须通过远程系统上的docker pull
提取所有这些图像,还是可以告诉我的.yml文件从我的仓库中取出?或者还有其他解决方案吗?
答案 0 :(得分:4)
不要担心私人注册。 docker-compose可以自动从私有存储库中提取图像。
在拉动之前,你需要在私人救援之前进行身份验证。在$docker login <private_repository>
$docker-compose up
注意!需要为自己的图片指定正确的名称。 您需要使用YOUR_REGISTRY_HOST标记图像
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
之后,您可以将图像推送到自己的注册表。进入docker-compose,您需要使用主机名指定完整的图像名称,如
image: my_registry/image_name
答案 1 :(得分:2)
Bukharov提供了正确的步骤。对于我自己,我在CI设置中询问了有关该主题的类似问题。我做了一些我想分享的文档。
启动注册表容器
run -d -p 127.0.0.1:5000:5000 --restart always -v registry:/var/lib/registry --name registry -e REGISTRY_STORAGE_DELETE_ENABLED=true registry:2.4
为私人注册表准备本地图片。
docker tag <local image> localhost:5000/<local image>
将图像添加到私人注册表。
docker push localhost:5000/<local image>
从私人注册表中提取图片。
docker pull localhost:5000/<local image>
从图片中删除标记。
docker rmi localhost:5000/gdal:1
列出所有图片。
curl -X GET http://localhost:5000/v2/_catalog
列出所列图像的所有标签。
curl -X GET http://localhost:5000/v2/<repository>/tags/list (Auflistung aller Tags zu einem repository)
阅读所有清单文件。
curl -X GET http://localhost:5000/v2/<repository>/manifests/<tag oder digest> -H "Accept: application/vnd.docker.distribution.manifest.v2+json"
删除私人注册表中的图片。
apt-get update && apt-get install -y curl jq
curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | tee /usr/local/bin/delete_docker_registry_image >/dev/null
chmod a+x /usr/local/bin/delete_docker_registry_image
export REGISTRY_DATA_DIR=/var/lib/registry/docker/registry/v2
delete_docker_registry_image --image nginx:stable-alpine –dry-run
delete_docker_registry_image --image nginx:stable-alpine
有关访问网络上的私人注册表的更多信息:
https://docs.docker.com/registry/deploying/#/running-a-domain-registry
有关私有dockre注册表的一般信息:https://docs.docker.com/registry/deploying/