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
[roo[email protected] ~]#
添加执行权限
[[email protected] ~]# chmod +x /usr/local/bin/docker-machine
[[email protected] ~]# docker-machine -v
docker-machine version 0.16.1, build cce350d7
给docker-machine取个别名 文件名太长 将alias可以写入/root/.bash_profile
[[email protected] ~]# alias dm=docker-machine
[[email protected] ~]# 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
- hyperv
- none
- openstack
- rackspace
- softlayer
- virtualbox
- vmwarevcloudair
- vmwarefusion
- vmwarevsphere
创建一个virtualbox的虚拟机名称为default
docker-machine create --driver virtualbox default
启动报错
[[email protected] yum.repos.d]# docker-machine create --driver virtualbox default![在这里插入图片描述](https://img-blog.****img.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源码包
[[email protected] 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安装
[[email protected] 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%]
[[email protected] kernels]# ll
total 11208
drwxr-xr-x 22 root root 4096 Feb 25 08:50 3.10.0-327.el7.x86_64
根据内核重新配置 virtualbox
[[email protected] kernels]# /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
再次测试创建 docker-machine
[[email protected] 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所有速度会比较慢
[[email protected] ~]# 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目录,不过速度真的慢 ,可以使用离线网盘下载
[[email protected] cache]# ll
total 46080
-rw-r--r-- 1 root root 47185920 Feb 26 2019 boot2docker.iso
[[email protected] cache]# pwd
/root/.docker/machine/cache
再次创建 成功
[[email protected] 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
查看指定名字虚拟机的环境变量
[[email protected] 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
[[email protected] ~]# 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环境)
[[email protected] ~]# eval $(docker-machine env default)
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
去除设置的环境变量
[[email protected] ~]# 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)
[[email protected] ~]# docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
获取虚拟机的ip
[[email protected] ~]# docker-machine ip default
192.168.99.100
直接用ssh连接到虚拟机
[[email protected] ~]# docker-machine ssh default
( '>')
/) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY.
(/-_--_-\) www.tinycorelinux.net
[email protected]:~$ 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: [email protected]: <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
[email protected]:~$ 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.****.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
接下来就可以通过名称管理了