这些将设置环境变量,然后执行命令。 例如
docker-machine exec mymachine docker images
docker-machine exec mymachine ./my-docker-wrapper.sh
听起来这已经是ssh
作用了吗?
docker-machine ssh mymachine -- ifconfig -a
docker-machine ssh mymachine -- docker info
docker-machine ssh mymachine -- "echo uname -a > test && chmod +x test && ./test"
你能详细说明这会有什么不同吗?
我不希望它在 docker 主机上运行,我希望它在本地运行,但是使用 docker setup 与远程主机通信。 基本上是一个更简单的版本
bash -c "eval $(docker-machine env mymachine);
docker images
"
我不太喜欢在最外层的外壳中改变我的环境,我一直忘记我已经完成了,然后突然 docker 的行为不同了,我很困惑。
这有点冗长,但如果我想在机器上运行一次性 docker 命令,我通常使用docker-machine config
,它将吐出正确的docker
标志以连接到给定的机器:
$ docker $(docker-machine config name) info
如果输入太多,您也可以像这样编写一个小的 shell 别名:
dkrm () {
docker $(docker-machine config $1) "${@:2}"
}
它将 Docker 客户端指向第一个参数指定的机器,并将其余部分传递给 Docker 客户端。
用法如:
$ dkrm devbox ps
... some containers on the machine "devbox"
$ dkrm staging ps
...some containers on the machine "staging"
这有帮助吗?
我不知道那个命令,所以谢谢你。 它确实有帮助,但它不像 exec 命令那样透明。 例如难以与 docker-compose、fig 或任何类型的包装脚本一起使用。 我有一个从当前目录中的几个文件中构建 Dockerfile 并通过docker build -
提供它。
我可以做一些类似DOCKER="docker $(docker-machine config mymachine)" ./build.sh
事情,然后在脚本中加入: ${DOCKER:=docker}
。 所以是可行的。 虽然不确定 docker-compose。
嘿,是的,如果你想使用docker-compose
你最好设置适当的环境变量。
最有用的评论
听起来这已经是
ssh
作用了吗?你能详细说明这会有什么不同吗?