如何使用单个命令使用ssh将以下说明发送到docker virtualbox vm?
我想从vm外部运行一个命令,以便命令可以嵌入到脚本中。但我似乎能做的就是连接交互式控制台。
具体内容如下:
我首先获取可用虚拟机列表,如下所示:
[root@localhost ~]# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
myvm1 - virtualbox Running tcp://192.168.99.102:2376 v18.04.0-ce
myvm2 - virtualbox Running tcp://192.168.99.100:2376 v18.04.0-ce
接下来,我尝试使用本教程中的命令将命令发送到其中一个列出的VM中,如下所示:
[root@localhost ~]# docker-machine ssh myvm1 “docker swarm init --advertise-addr tcp://192.168.99.102:2377”
sh: “docker: not found
exit status 127
请注意,该命令会引发错误,因为当命令作为参数传递到VM时,无法找到
docker
命令。
为了隔离问题,我检查了如果我手动登录交互式控制台,确保相同的命令有效,如下所示:
[root@localhost ~]# docker-machine ssh myvm1
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 18.04.0-ce, build HEAD : b8a34c0 - Wed Apr 11 17:00:55 UTC 2018
Docker version 18.04.0-ce, build 3d479c0
docker@myvm1:~$ docker swarm init --advertise-addr 192.168.99.102:2377
Swarm initialized: current node (gnrj1sbx36j8lf82o9bk6yz58) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-57xhc6p7xpmeicznpfc7i6fhz9p9tdt48m5dqhqj3v4u42217g-50vj218ggzvm1shbuj3ei4brb 192.168.99.102:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
docker@myvm1:~$
鉴于从VM的 INSIDE 调用该命令时该命令有效,当从外部作为参数传递命令时,需要执行哪些特定步骤才能使命令工作VM?
主机是CentOS 7服务器,以防影响docker机器CLI命令。
答案 0 :(得分:2)
找不到的命令是“docker
而不是docker
尝试从此处输入或复制:
docker-machine ssh myvm1 "docker swarm init --advertise-addr tcp://192.168.99.102:2377"
当我从一些网站复制并粘贴代码时,我经常遇到这个问题。他们通常使用“
代替"
。
在shell中(通常用于编码)我们只使用常规引号(双引号 "
或单引号 '
)。
对于写作(例如,在Word中),通常将引号替换为卷曲引号。但是这种类型的引用与常规引号的解释方式不同(它们是不同的字符)。
“docker ...“
与"docker ..."