TL; DR基本上,我正在寻找:
docker push myimage ssh://myvps01.vpsprovider.net/
Run Code Online (Sandbox Code Playgroud)
我没有理解整个Docker Hub/Registry事件的基本原理.我知道我可以运行私有注册表,但为此我必须设置实际运行服务器的基础结构.
我偷偷摸摸了Docker的内部工作(至少是文件系统),看起来Docker图像层只是一堆tarball,或多或少,有一些精心设计的文件命名.我天真地认为用一个简单的Python脚本来做分布式推/拉是不可能的,但当然我没有尝试,所以这就是我问这个问题的原因.
有没有任何技术原因为什么Docker不能像Git或Mercurial一样进行分布式(无服务器)推/拉?
我认为这将是一个巨大的帮助,因为我可以将我在笔记本电脑上构建的图像直接推送到应用服务器上,而不是首先推送到某个地方的repo服务器然后从应用服务器拉出来.或者我可能误解了这个概念,而且注册表是我绝对需要的一个非常重要的功能?
编辑一些有希望解释我为什么要这样做的上下文,请考虑以下场景:
目前最好的解决方案是使用Docker机器指向VPS服务器并重建它,但它减慢了部署,因为我每次都必须从源构建容器.
我想把我的应用程序堆栈,包括3个docker镜像并由docker-compose管理,并将它从我的开发机器整个移动到生产机器上.我知道有几种方法可以直接使用docker:
我目前倾向于做docker save然后docker load,但我想知道是否有办法用docker-compose管理的整套容器来做这件事?
提前致谢
我想做的事:
我已经在TLS验证设置为true的一台机器上运行dockerd。我想将此主机添加为计算机docker-machine
我做了什么:
我使用以下命令启动dockerd:
$ sudo dockerd -D --tls=true --tlscert=cert.pem --tlskey=key.pem -H tcp://172.19.48.247:2376
Run Code Online (Sandbox Code Playgroud)
在第二台计算机上,我获取了以下变量:
export DOCKER_HOST=tcp://172.19.48.247:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/path/to/ssl
Run Code Online (Sandbox Code Playgroud)
并成功运行docker命令:
$ docker run busybox echo hello
hello
Run Code Online (Sandbox Code Playgroud)
然后我添加了这个主机docker-machine:
docker-machine create --driver none --url=tcp://172.19.48.247:2376 dockerhost
Run Code Online (Sandbox Code Playgroud)
我要去哪里了:
我现在x509: certificate signed by unknown authority出错了。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS Unknown
dockerhost - none Running tcp://172.19.48.247:2376 Unknown Unable to query docker version: Get https://172.19.48.247:2376/v1.15/version: x509: certificate signed by unknown authority
Run Code Online (Sandbox Code Playgroud)
我尝试使用,docker-machine config但是不起作用: …