通过SSH

时间:2018-04-17 17:59:40

标签: docker centos virtualbox docker-swarm docker-machine

  

如何使用单个命令使用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命令。

1 个答案:

答案 0 :(得分:2)

找不到的命令是“docker而不是docker

尝试从此处输入或复制:

docker-machine ssh myvm1 "docker swarm init --advertise-addr tcp://192.168.99.102:2377"

当我从一些网站复制并粘贴代码时,我经常遇到这个问题。他们通常使用代替"

卷曲引号

在shell中(通常用于编码)我们只使用常规引号(双引号 "单引号 ')。

对于写作(例如,在Word中),通常将引号替换为卷曲引号。但是这种类型的引用与常规引号的解释方式不同(它们是不同的字符)。

“docker ...“"docker ..."

不同