docker-machine中的Eval:terminal vs shell脚本
我正在尝试运行一个简单的shell脚本来自动更改docker-machine环境。 问题是这样的,当我在Macterminal中直接运行以下命令时,输出如下内容:
eval $(docker-machine env default) docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * digitalocean Running tcp://***.**.***.***:**** v1.12.0
所以基本上你会期望,但是当我运行下面的.sh脚本:
#!/usr/bin/env bash eval $(docker-machine env default)
输出是:
./run.sh docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default digitalocean Running tcp://***.**.***.***:**** v1.12.0
所以基本上,它不是设置为主动,我无法访问它。
有没有人遇到过这个问题,知道如何解决它? 看起来对我来说真的很奇怪,几乎所有的东西都在运行,而且自动化了。
干杯,亚伦
我认为你需要find你的shell脚本
source ./myscript.sh
因为在eval中的出口正在返回到你开始运行shell的过程中,然后被处理掉。 这些需要去父母,例如loginshell
考虑a.sh
#!/bin/bash eval $(echo 'export a=123') export b=234
当以两种方式运行时
$ ./a.sh $ echo $a $ echo $b $ source a.sh $ echo $a 123 $ echo $b 234 $
- '–link'似乎不能连接两个Docker容器
- Docker-compose invalid bind mount spec“/ rootfs:ro”:无效的卷规范
- 无法从Docker Cloud获取CloudWatch中的错误日志
- Docker-Machine AWS策略
- 连接到docker-compose mysql容器会拒绝访问,但docker运行相同的映像不会
- 无法运行rake db:在Docker-compose中的Dockerfile中创build
- mbind:与续集pro连接时不允许操作
- 如何在docker集装箱运行与gunicorn aiohttp?
- khwunchai / hortonworksdocker的形象