运行 eval 和 $(docker-machine ...) 之前的 docker 之间的区别
Difference between running eval and docker before $(docker-machine ...)
正如标题所说,运行 与 docker-machine 的命令与
之间有什么区别
eval $(docker-machine env mycontainer)
docker run httpd
和
docker $(docker-machine config mycontainer) run httpd
因为两者都在 "mycontainer" ip 下创建了一个 httpd 图像,但是对于第二个,"docker ps"
没有显示容器
在第一种形式中,您首先评估一系列环境变量(DOCKER_HOST
、DOCKER_CERT_PATH
、DOCKER_TLS_VERIFY
、DOCKER_MACHINE_NAME
),它们正在配置您当前的 shell 这样您以后启动的任何 docker
命令都会与同一个 docker 守护进程对话。
在第二种形式中,您将参数 (--tlsverify
、--tlscacert
、--tlscert
、--tlskey
、-H
) 直接传递给 docker
命令。这些最终将覆盖您的环境中已有的值或默认值(即连接到本地守护进程)。
在最近的案例中,如果您想查看刚刚启动的容器以确保您正在与正确的服务器通信,则必须再次使用相同的命令行参数 docker $(docker-machine config mycontainer) ps
总结一下:
config
更适合单人现场指挥
env
在同一台服务器上进行完整会话更方便。
正如标题所说,运行 与 docker-machine 的命令与
之间有什么区别eval $(docker-machine env mycontainer)
docker run httpd
和
docker $(docker-machine config mycontainer) run httpd
因为两者都在 "mycontainer" ip 下创建了一个 httpd 图像,但是对于第二个,"docker ps"
没有显示容器在第一种形式中,您首先评估一系列环境变量(DOCKER_HOST
、DOCKER_CERT_PATH
、DOCKER_TLS_VERIFY
、DOCKER_MACHINE_NAME
),它们正在配置您当前的 shell 这样您以后启动的任何 docker
命令都会与同一个 docker 守护进程对话。
在第二种形式中,您将参数 (--tlsverify
、--tlscacert
、--tlscert
、--tlskey
、-H
) 直接传递给 docker
命令。这些最终将覆盖您的环境中已有的值或默认值(即连接到本地守护进程)。
在最近的案例中,如果您想查看刚刚启动的容器以确保您正在与正确的服务器通信,则必须再次使用相同的命令行参数 docker $(docker-machine config mycontainer) ps
总结一下:
config
更适合单人现场指挥env
在同一台服务器上进行完整会话更方便。