使用docker-machine ,可以启动、审查、停止、重新启动托管的宿主机、升级docker客户端和守护程序,并配置docker客户端与宿主机通信。
安装docker-machine
If you are running macOS:1
2
3$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine
If you are running Linux:1
2
3
4$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine
If you are running Windows with Git BASH:1
2
3
4$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
mkdir -p "$HOME/bin" &&
curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" &&
chmod +x "$HOME/bin/docker-machine.exe"
参考: 官方文档
下载阿里云docker-machine驱动
下载docker-machine阿里云驱动
1 | # 下载 |
1 | 如果创建失败可以用下面命令删除 |
想要创建一个阿里云虚拟化示例,需要满足几个条件
- 账户余额大于100,因为创建的实例为按量付费
- 设置accesskey,需要具备操作账户的权限
操作记录
1 | [root@izbp1bb2egi7vzn29c1dhvz ~]# base=https://github.com/docker/machine/releases/download/v0.16.0 && |
补充
杭州镜像创建:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19docker-machine create -d aliyunecs \
--aliyunecs-access-key-id='<Your access key ID>' \
--aliyunecs-access-key-secret='<Your secret access key>' \
--aliyunecs-system-disk-size='40' \
--aliyunecs-image-id='centos_7_05_64_20G_alibase_20181210.vhd' \
--aliyunecs-io-optimized='true' \
--aliyunecs-instance-type='ecs.t5-lc2m1.nano' \
--aliyunecs-internet-max-bandwidth='1' \
--aliyunecs-region='cn-hangzhou' \
--aliyunecs-ssh-password='<Your ssh password>' \
--aliyunecs-zone='cn-hangzhou-i' \
worker1
--aliyunecs-zone ECS_ZONE - 可用区id,这个我没有找到,后来是用阿里云openapi explorer查出来的
https://api.aliyun.com/?spm=a2c4g.11186623.2.8.2a6f7f49RdvJPV#/?product=Ecs&api=DescribeZones¶ms={%22RegionId%22:%22cn-hangzhou%22}&tab=DEMO&lang=JAVA
--aliyunecs-image-id ECS_IMAGE_ID - ecs镜像id,我找这个找了很久,因为找的是公共镜像,公共镜像id在控制台,云服务器ECS,镜像,公共镜像里有
删除服务器
1 | [root@izbp1bb2egi7vzn29c1dhvz ~]# docker-machine ls |
常用操作
链接服务器
1 | [root@izbp1bb2egi7vzn29c1dhvz ~]# docker-machine env manager |
查看主机配置信息
1 | docker-machine config [options] |
挂载共享目录
1 | yum -y install fuse-sshfs |
sshfs可以把远程主机的文件系统映射到本地主机上,透过ssh把远程文件系统挂载到本机上,这样可以不必使用scp工具就可以做到直接复制及删除远程主机的文件了。就像操作本地磁盘一样方便。
注意如果挂载的文件不为空,会提示让你设置参数,但是docker-machine mount 是不支持的
下面这种方式可以,但是会将现有文件的内容清空,谨慎使用sshfs root@121.xxx.xxx.187:/root/worker1 worker1 -o nonempty
docker-machine操作步骤1
2
3
4
5
6
7
8
9
10[root@izbp1bb2egi7vzn29c1dhvz ~]# yum install fuse-sshfs -y
[root@izbp1bb2egi7vzn29c1dhvz ~]# mkdir data
[root@izbp1bb2egi7vzn29c1dhvz ~]# pwd
/root
[root@izbp1bb2egi7vzn29c1dhvz ~]# docker-machine mount manager:/data ./data
[root@izbp1bb2egi7vzn29c1dhvz ~]# cd data/
[root@izbp1bb2egi7vzn29c1dhvz data]# touch remark.md
[root@izbp1bb2egi7vzn29c1dhvz data]# cat remark.md
挂载成功
docker-manager操作步骤1
2
3
4
5
6
7
8
9
10
11
12
13[root@izbp1bb2egi7vzn29c1dhvz ~]# docker-machine ssh manager
Last login: Mon Nov 25 16:10:53 2019 from 47.96.181.251
Welcome to Alibaba Cloud Elastic Compute Service !
[root@manager ~]# ll
total 0
[root@manager ~]# mkdir /data
[root@manager ~]# vim /data/remark.md
挂载成功
[root@manager ~]# cat /data/remark.md
挂载成功
取消挂载 -u
docker-machine mount -u manager:/data ./data
一个目录只能被挂载到一台机器上
拷贝文件 SCP
1 | docker-machine scp -r host1:/tmp/a(源地址) host2:/tmp/b(目标地址) |