【发布时间】:2018-04-18 02:51:19
【问题描述】:
如何使用单个命令通过 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:~$
鉴于从INSIDE VM 控制台调用该命令时该命令有效,需要哪些特定步骤才能使该命令在从VM 外部作为参数传递时有效?
主机是 CentOS 7 服务器,以防影响 docker 机器 CLI 命令。
【问题讨论】:
标签: docker centos virtualbox docker-swarm docker-machine