docker纪录篇6-docker machine

docker-machine简介

Docker Machine是一个工具,用来在虚拟主机上安装Docker Engine,并使用 docker-machine命令来管理这些虚拟主机
您可以docker-machine完成以下工作:

  • 在Mac或Windows上安装和运行docker(类似于在window上安装多个虚拟机),
  • 提供和管理多个远程docker主机
  • 提供安装Swarm 集群

docker-machine安装

官方安装文档:https://docs.docker.com/machine/install-machine/
安装过程(linux执行)

base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo install /tmp/docker-machine /usr/local/bin/docker-machine

如果下载速度慢 可以去github下载https://github.com/docker/machine/releases
拷贝到linux 比如名字是docker-machine-Linux-x86_64当前目录下执行

mv ./docker-machine-Linux-x86_64  /usr/local/bin/docker-machine
[root@swarm04 ~]# 

添加执行权限

[root@swarm04 ~]# chmod +x /usr/local/bin/docker-machine
[root@swarm04 ~]# docker-machine -v                     
docker-machine version 0.16.1, build cce350d7

给docker-machine取个别名 文件名太长 将alias可以写入/root/.bash_profile

[root@swarm04 ~]# alias dm=docker-machine
[root@swarm04 ~]# dm -v
docker-machine version 0.16.1, build cce350d7

卸载只需要删除该文件即可

docker-machine安装虚拟机

docker-machine安装虚拟机必须使用第三方的驱动 比如virtualbox
下载centos7版本virtualbox

拷贝到linux执行命令(一般安装依赖很多包 安装较复杂 不推荐)

rpm -ivh VirtualBox-6.0-6.0.4_128413_el7-1.x86_64.rpm

进入https://www.virtualbox.org/wiki/Linux_Downloads到最下面的
RPM-based Linux distributions章节
在这里插入图片描述
找到连接 获取

cd /etc/yum.repos.d && wget https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo

使用yum安装,自动安装依赖(注意安装virtualbox5.0别安装6.0否则 提示不支持5.0)

yum install VirtualBox-5.0

官方支持的驱动有下面这些

  • amazonec2
  • azure
  • digitalocean
  • exoscale
  • generic
  • google
  • hyperv
  • none
  • openstack
  • rackspace
  • softlayer
  • virtualbox
  • vmwarevcloudair
  • vmwarefusion
  • vmwarevsphere

创建一个virtualbox的虚拟机名称为default

docker-machine create --driver virtualbox default

启动报错

[root@swarm04 yum.repos.d]# docker-machine create --driver virtualbox default![在这里插入图片描述](https://img-blog.csdnimg.cn/20190226004118449.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9taW40MTYxMDA1Njk=,size_16,color_FFFFFF,t_70)
Running pre-create checks...
Error with pre-create check: "We support Virtualbox starting with version 5. Your VirtualBox install is \"WARNING: The vboxdrv kernel module is not loaded. Either there is no module\\n         available for the current kernel (3.10.0-327.el7.x86_64) or it failed to\\n         load. Please recompile the kernel module and install it by\\n\\n           sudo /sbin/rcvboxdrv setup\\n\\n         You will not be able to start VMs until this problem is fixed.\\n5.0.40r115130\". Please upgrade at https://www.virtualbox.org"

安装支持内核

yum -y install kernel-devel

查看uname -r 和/usr/src/kernel内核版本不匹配
此时 下载uname -r 对应版本的最大的iso镜像里面会包含 devel源码包

[root@swarm04 kernels]# uname -r
3.10.0-327.el7.x86_64

下载该版本的的centos(你自己安装的机器总该有镜像iso吧 因为之前下的mini版本所以不带源码包)centos版本不等于内核版本哦
http://mirror.nsc.liu.se/centos-store/7.2.1511/isos/x86_64/(4G版本DVD版本)
比如我的mini版本中没有kernel-devel 肯定是有内核kernel的和uname -r一致
在这里插入图片描述
dvd版本中
在这里插入图片描述
删除之前源码包

yum autoremove kernel-devel

将该包上传到linux使用 rpm安装

[root@swarm04 kernels]# rpm -ivh kernel-devel-3.10.0-327.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:kernel-devel-3.10.0-327.el7      ################################# [100%]
[root@swarm04 kernels]# ll
total 11208
drwxr-xr-x 22 root root     4096 Feb 25 08:50 3.10.0-327.el7.x86_64

根据内核重新配置 virtualbox

[root@swarm04 kernels]# /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.

再次测试创建 docker-machine

[root@swarm04 kernels]# docker-machine create --driver virtualbox default
Running pre-create checks...
Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"

因为我是用vmware安装的centos7打开虚拟化,物理机bios中设置开启即可
在这里插入图片描述
之后就是正常的 需要下载boot2docker.iso所有速度会比较慢

[root@swarm04 ~]# docker-machine create --driver virtualbox default
Running pre-create checks...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v18.09.2
(default) Downloading /root/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.09.2/boot2docker.iso...

通过查看上面日志,想到先从
https://github.com/boot2docker/boot2docker/releases/download/v18.09.2/boot2docker.iso
下载后放入/root/.docker/machine/cache目录,不过速度真的慢 ,可以使用离线网盘下载

[root@swarm04 cache]# ll
total 46080
-rw-r--r-- 1 root root 47185920 Feb 26  2019 boot2docker.iso
[root@swarm04 cache]# pwd
/root/.docker/machine/cache

再次创建 成功

[root@swarm04 cache]# docker-machine create --driver virtualbox default
Running pre-create checks...
Creating machine...
(default) Copying /root/.docker/machine/cache/boot2docker.iso to /root/.docker/machine/machines/default/boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Found a new host-only adapter: "vboxnet0"
(default) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default

查看所有安装的虚拟机

docker-machine ls
 NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER   ERRORS
 default   *        virtualbox   Running   tcp://192.168.99.187:2376           v1.9.1

查看指定名字虚拟机的环境变量

[root@swarm04 cache]# docker-machine env default                 
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell: 
# eval $(docker-machine env default)

如果你本机有docker 停止docker 执行docker命令 肯定是不行的默认连接本机的docker

[root@swarm04 ~]# docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

在本机设置该环境变量 操作docker就等于操作这个default虚拟机

 eval $(docker-machine env default)

再次执行(说明这台虚拟机上也已经设置了docker环境)

[root@swarm04 ~]#  eval $(docker-machine env default)
[root@swarm04 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

去除设置的环境变量

[root@swarm04 ~]# docker-machine env -u
unset DOCKER_TLS_VERIFY
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_MACHINE_NAME
# Run this command to configure your shell: 
# eval $(docker-machine env -u)

执行

eval $(docker-machine env -u)
[root@swarm04 ~]# docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

获取虚拟机的ip

[root@swarm04 ~]# docker-machine ip default
192.168.99.100

直接用ssh连接到虚拟机

[root@swarm04 ~]# docker-machine ssh default
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net
docker@default:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:c7:f4:6d brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fec7:f46d/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:0b:a5:d5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.99.100/24 brd 192.168.99.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe0b:a5d5/64 scope link 
       valid_lft forever preferred_lft forever
4: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:ed:d6:9d:f8 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
docker@default:~$ exit
logout

其他支持的命令

  • docker-machine config
  • docker-machine env 环境变量
  • docker-machine inspect 查看主机详细信息
  • docker-machine ip 获取主机ip地址
  • docker-machine kill 强制终止虚拟主机
  • docker-machine provision
  • docker-machine regenerate-certs 重新生成证书
  • docker-machine restart 重启虚拟主机
  • docker-machine ssh ssh登录虚拟主机
  • docker-machine start 启动虚拟主机
  • docker-machine status 获取虚拟主机状态
  • docker-machine stop 停止虚拟主机
  • docker-machine upgrade 更新主机为最新版本的docker
  • docker-machine url 获取主机的远程访问路径 比如tcp://192.168.99.100:2376
  • docker-machine rm 删除虚拟主机

docker-machine管理docker主机

docker-machine支持管理其他远程主机使用generic 驱动类型
比如a(192.168.58.144)机器上安装了docker-machine 管理b(192.168.58.145)机器 a机器必须先等通过ssh免密登录b
具体免密登录参考
https://blog.csdn.net/liaomin416100569/article/details/87611348#1sshkeygen_1
创建docker-machine

 docker-machine create \
  --driver generic \
  --generic-ip-address=192.168.58.144 \
  --generic-ssh-key ~/.ssh/id_rsa \
  vm

接下来就可以通过名称管理了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值