$(docker-machine ...)之前运行eval和docker之间的区别

时间:2019-12-03 15:00:48

标签: docker eval docker-machine

正如标题所述,以

的形式运行docker-machine的命令有什么区别?
eval $(docker-machine env mycontainer) 
docker run httpd 

还有

docker $(docker-machine config mycontainer) run httpd

因为两者都在“ mycontainer” ip下创建了一个httpd图像,但第二个图像中没有显示“ docker ps”的容器

1 个答案:

答案 0 :(得分:2)

在第一种形式中,您首先要评估一系列环境变量(DOCKER_HOSTDOCKER_CERT_PATHDOCKER_TLS_VERIFYDOCKER_MACHINE_NAME),这些变量正在配置当前的shell,以便您稍后启动的任何docker命令都将与同一个docker守护程序对话。

在第二种形式中,您将参数(--tlsverify--tlscacert--tlscert--tlskey-H)直接传递给{{1 }}命令。这些最终将覆盖您的环境中已经存在的值或默认值(即连接到本地守护程序)。

在最新情况下,如果要查看刚刚启动的容器以确保与正确的服务器通信,则必须再次使用与docker相同的命令行参数

总结:

  • docker $(docker-machine config mycontainer) ps更适用于单个现场命令
  • config在同一服务器上进行完整会话更为方便。