docker-machine & docker swarm基本使用

本文接上篇,记录了安装好docker-machine并创建hyper-v虚拟机后的基本使用。包括用docker-machine管理虚拟机节点、创建服务,初始化swarm集群,将节点加入或退出集群,创建ping服务并查看状态,以及服务的弹性扩容和收缩等操作,还提及更多命令解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上篇:我是上篇(docker-machine hyper-v)

安装好docker-machine并创建hyper-v虚拟机之后,下面记一下基本使用:

 .\docker-machine.exe create -d hyperv --hyperv-virtual-switch "Virtual Switch(Main)" manager1
 .\docker-machine.exe create -d hyperv --hyperv-virtual-switch "Virtual Switch(Main)" worker1
 .\docker-machine.exe create -d hyperv --hyperv-virtual-switch "Virtual Switch(Main)" worker2

创建好虚拟机之后, 使用docker-machine来管理虚拟机节点,并创建服务service,进入docker容器查看。

查看当前虚拟机节点:

PS D:\docker\machine\bin> .\docker-machine.exe  ls
NAME       ACTIVE   DRIVER   STATE     URL                        SWARM   DOCKER     ERRORS
manager1   -        hyperv   Running   tcp://192.168.72.26:2376           v18.09.6
worker1    -        hyperv   Running   tcp://192.168.72.27:2376           v18.09.6
worker2    -        hyperv   Running   tcp://192.168.72.28:2376           v18.09.6

连接manager1节点,并初始化swarm集群, 打印的信息可以看到提示加入集群所需执行的命令。docker info可以查看集群信息

PS D:\docker\machine\bin> .\docker-machine.exe ssh manager1
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

docker@manager1:~$ docker -v
Docker version 18.09.6, build 481bc77
docker@manager1:~$ docker swarm init --advertise-addr 192.168.72.26
Swarm initialized: current node (y1xeo1k4opnq4eea9qeazcyk8) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4zzopt74o78yci6imcma2or4w8jsunh3uai4j3taqpdfvwsgbp-3l1r0uhk7bayrz4rtb4yly5s2 192.168.72.26:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

退出manager1, 分别连接到worker1和worker2,将他们加入到集群中,docker swarm join --token xxxx ip:port

docker@manager1:~$ exit
logout
PS D:\docker\machine\bin> .\docker-machine.exe ssh worker1
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

docker@worker1:~$ docker -v
Docker version 18.09.6, build 481bc77
docker@worker1:~$ docker swarm join --token SWMTKN-1-4zzopt74o78yci6imcma2or4w8jsunh3uai4j3taqpdfvwsgbp-3l1r0uhk7bayrz4rtb4yly5s2 192.168.72.26:2377
This node joined a swarm as a worker.

重新进入manager1,查看集群信息

PS D:\docker\machine\bin> .\docker-machine.exe ssh manager1
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

docker@manager1:~$ docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
y1xeo1k4opnq4eea9qeazcyk8 *   manager1            Ready               Active              Leader              18.09.6
zqgb9fcdmxptulfkanczyf0i0     worker1             Ready               Active                                  18.09.6
99y1cqxlbfsunzsrwwipp6i60     worker2             Ready               Active                                  18.09.6

创建一个ping服务,并查看服务运行状态,--replicas 启动副本数,--name 服务名称, alpine代表镜像名称,后面的是执行的命令。alpine镜像需要存在,所以要先pull下来,然后再进行后续操作

docker@manager1:~$ docker search alpine
...
docker@manager1:~$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
Digest: sha256:ca1c944a4f8486a153024d9965aafbe24f5723c1d5c02f4964c045a16d19dc54
Status: Downloaded newer image for alpine:latest
docker@manager1:~$ docker service create --replicas 2 --name hello alpine ping baidu.com
zapayrx2ksozadjo7w52yowtk
overall progress: 1 out of 1 tasks
1/1: running
verify: Waiting 4 seconds to verify that tasks are stable...
verify: Service converged
docker@manager1:~$ docker service ps hello
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
5l2e1ej5cov5        hello.1             alpine:latest       worker1             Running             Running 11 seconds ago            
uiyag7vxfcgy        hello.2             alpine:latest       manager1            Running             Running 11 seconds ago     
docker@manager1:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
5tmd76toz3nr        hello               replicated          2/2                 alpine:latest

可以连接到worker1,通过docker ps 查看容器中运行的进程。

服务的弹性扩容和收缩,到manager1管理节点执行命令

docker@manager1:~$ docker service update --replicas 3 hello
hello
overall progress: 2 out of 3 tasks
overall progress: 3 out of 3 tasks
1/3: running
2/3: running
3/3: running
verify: Service converged
docker@manager1:~$ docker service ps hello
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
5l2e1ej5cov5        hello.1             alpine:latest       worker1             Running             Running 15 minutes ago            
uiyag7vxfcgy        hello.2             alpine:latest       manager1            Running             Running 15 minutes ago            
2vchohxlhzhm        hello.3             alpine:latest       worker2             Running             Running 9 seconds ago             
docker@manager1:~$ docker service update --replicas 1 hello
hello
overall progress: 1 out of 1 tasks
1/1: running
verify: Service converged

将woker2退出集群, ssh到worker2节点,执行docker swarm leave退出集群,ssh manger1查看集群节点信息,worker2状态为down, 重新加入,执行docker swarm join操作即可。

PS D:\docker\machine\bin> .\docker-machine.exe ssh worker2
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

docker@worker2:~$ docker swarm leave
Node left the swarm.
docker@worker2:~$ exit
logout
PS D:\docker\machine\bin> .\docker-machine.exe ssh manager1
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

docker@manager1:~$ docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
y1xeo1k4opnq4eea9qeazcyk8 *   manager1            Ready               Active              Leader              18.09.6
zqgb9fcdmxptulfkanczyf0i0     worker1             Ready               Active                                  18.09.6
99y1cqxlbfsunzsrwwipp6i60     worker2             Down                Active                                  18.09.6

更多命令解释:docker-machine command line

 

 

<think>好的,用户遇到了一个错误,执行命令docker-machine create时提示命令未找到。我需要先分析可能的原因。首先,用户可能没有安装docker-machine工具。Docker Machine是一个独立的工具,需要单独安装,特别是如果他们在使用较旧的Docker版本或者Docker Toolbox的话。另外,用户可能安装的是Docker Desktop,而它可能没有包含docker-machine,或者路径没有正确配置。 接下来,我需要考虑不同的操作系统情况。用户使用的是VirtualBox驱动,可能是在Linux系统上,比如CentOS,因为提示符是[root@localhost ~]#。不过,Docker Machine在Linux上的安装方式可能与其他系统不同,需要确认正确的安装步骤。 可能的解决方案包括安装Docker Machine,或者如果用户已经安装了Docker Desktop,可能需要使用其他命令,比如docker swarm init来创建Swarm集群,而无需Docker Machine。同时,用户可能混淆了不同的Docker工具,需要解释Docker Machine的作用以及替代方案。 需要分步骤引导用户检查是否安装了Docker Machine,如果没有,指导如何安装,并提供不同操作系统的安装方法。同时,提醒用户注意版本兼容性和安装后的路径配置。此外,建议用户考虑使用Docker Desktop内置的Swarm功能,可能更简便。 最后,确保回答清晰,结构合理,使用中文,避免技术术语过于复杂,让用户能够一步步解决问题。</think>你遇到的错误 `-bash: docker-machine: command not found` 表示系统无法找到 `docker-machine` 命令。以下是逐步分析和解决方案: --- ### **原因分析** 1. **未安装 Docker Machine** `docker-machine` 是一个独立工具,用于在虚拟环境(如 VirtualBox)中创建和管理 Docker 主机。Docker Desktop 默认不包含此工具,需手动安装。 2. **环境变量未配置** 如果已安装但命令仍不可用,可能是安装路径未添加到系统的 `PATH` 环境变量中。 --- ### **解决方案** #### **方法 1:安装 Docker Machine** 适用于需要通过 VirtualBox 创建 Swarm 节点的场景。 1. **下载 Docker Machine 二进制文件** 在 Linux/CentOS 中执行以下命令: ```bash # 下载最新版(替换版本号) curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-$(uname -s)-$(uname -m) > /usr/local/bin/docker-machine # 添加可执行权限 chmod +x /usr/local/bin/docker-machine ``` 2. **验证安装** ```bash docker-machine --version # 应输出类似:docker-machine version 0.16.2, build xxxxxxx ``` --- #### **方法 2:使用 Docker Desktop 内置 Swarm 功能(推荐)** 如果你使用的是较新的 Docker 版本(如 Docker Desktop),`docker-machine` 已逐渐被弃用,建议直接使用 Docker Swarm: 1. **初始化 Swarm 集群** ```bash docker swarm init ``` 2. **添加节点** 根据输出提示,在其他机器上运行 `docker swarm join` 命令加入集群。 --- #### **方法 3:检查安装路径** 如果已安装但命令仍不可用,手动检查路径: ```bash # 查找 docker-machine 位置 sudo find / -name docker-machine # 将路径添加到环境变量(假设路径为 /usr/local/bin) export PATH=$PATH:/usr/local/bin ``` --- ### **补充说明** - **Docker Machine 的用途**:用于在虚拟机或云平台中创建 Docker 主机(如 VirtualBox、AWS),适用于旧版本 Docker 或非桌面环境。 - **现代替代方案**:Docker Desktop 已集成 Swarm 功能,推荐直接使用 `docker swarm` 命令管理集群。 执行上述步骤后,再次运行 `docker-machine create -d virtualbox swarm-manager` 应可正常执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值