正如标题所述,以
的形式运行docker-machine的命令有什么区别?eval $(docker-machine env mycontainer)
docker run httpd
还有
docker $(docker-machine config mycontainer) run httpd
因为两者都在“ mycontainer” ip下创建了一个httpd图像,但第二个图像中没有显示“ docker ps”的容器
答案 0 :(得分:2)
在第一种形式中,您首先要评估一系列环境变量(DOCKER_HOST
,DOCKER_CERT_PATH
,DOCKER_TLS_VERIFY
,DOCKER_MACHINE_NAME
),这些变量正在配置当前的shell,以便您稍后启动的任何docker
命令都将与同一个docker守护程序对话。
在第二种形式中,您将参数(--tlsverify
,--tlscacert
,--tlscert
,--tlskey
,-H
)直接传递给{{1 }}命令。这些最终将覆盖您的环境中已经存在的值或默认值(即连接到本地守护程序)。
在最新情况下,如果要查看刚刚启动的容器以确保与正确的服务器通信,则必须再次使用与docker
相同的命令行参数
总结:
docker $(docker-machine config mycontainer) ps
更适用于单个现场命令config
在同一服务器上进行完整会话更为方便。