docker-machine安装 配置 使用


docker是Docker官方三剑客项目之一,可以在本地或云端创建和管理docker主机。docker-machine的两个主要用途:

1.在老旧的Mac or Windows机器上运行docker
在这里插入图片描述
2.为多台远程主机(虚拟机,云主机,局域网内机器)安装docker
在这里插入图片描述
官方教程:Install Docker Machine

一、安装docker-machine

在线安装
#根据实际情况选择版本号
base=https://github.com/docker/machine/releases/download/v0.16.1 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo install /tmp/docker-machine /usr/local/bin/docker-machine
离线安装

从这里直接下载,然后重命名为docker-machine,并移到/usr/local/bin下。

#重命名-->授权-->移到/usr/local/bin下
rm docker-machine-Linux-x86_64  docker-machine
chmod +x  docker-machine
cp docker-machine /usr/local/bin

之后,检测是否安装成功

docker-machine version
docker-machine -v

二、安装自动完成脚本

在线安装
base=https://raw.githubusercontent.com/docker/machine/v0.16.1
for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash
do
  sudo wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
done
离线安装

从https://github.com/docker/machine/tree/v0.16.1/contrib/completion/bash(对应版本号)下载以下三个脚本文件,然后拷贝到/etc/bash_completion.d目录下。

  • docker-machine-prompt.bash
  • docker-machine-wrapper.bash
  • docker-machine.bash
    之后,刷新一下
source /etc/bash_completion.d/docker-machine-prompt.bash

最后,添加 $(__docker_machine_ps1)到PS1设置中~/.bashrc。

vim ~/.bashrc,添加以下内容。

PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '

三、docker-machine

安装docker client客户端

  已经在宿主机上安装了docker machine,docker macine需要在通过docker的客户端远程控制虚拟机上的docker服务。从https://download.docker.com/win/static/stable/x86_64/docker-17.09.0-ce.zip下载软件包,这个是最新版本的windows的docker可执行程序,解压缩以后将其中的文件docker放在 h o m e / b i n 目 录 下 , home/bin目录下, home/binhome就是git bash的主目录,然后在git bash中执行chmod +x docker。

安装创建虚拟机

  docker machine本身也可以通过命令行的方式创建虚拟机,但是比较麻烦不好控制。这里直接通过VirtualBox的GUI创建三台虚拟机,镜像是ubuntu-16.04.3-server-amd64.iso。docker machine在远程的虚拟机上安装docker时肯定是需要访问外网来安装软件的,所以三台虚拟机都应该具备访问外网的能力,另外这三台虚拟机相互之间、虚拟机与windows缩主机之间也需要能够连通。这里每台虚拟机分配两张网卡,其中enp0s3是主网卡,属于nat网络,用来访问外网。enp0s8是仅host主机网络,用来在虚拟机之间、虚拟机与宿主机互连。具体配置如下表:
不积跬步,无以至千里。不积小流,无以成江海!

虚拟机名称enp0s3enp0s8
manager10.0.3.8192.168.56.1
worker110.0.3.9192.168.5.14
worker210.0.3.10192.168.5.0
宿主机通过ssh访问虚拟机免密设置

  docker machine在虚拟机上安装docker时需要ssh能免密访问虚拟机。默认情况下,ubuntu虚拟机不允许root用户通过ssh远程访问。分别在每台虚拟机上修改/etc/ssh/sshd_config,将PermitRootLogin的值改成yes,再执行/etc/init.d/ssh restart,这样root用户可以通过ssh远程访问虚拟机了。                                                
  在Git BASH中执行以下指令:

# 生成秘钥对,一直点回车
ssh-keygen
# 将公钥传输给虚拟机,需要输入root密码
ssh-copy-id root@192.168.56.103
ssh-copy id root@192.168.56.104
ssh-copy-id root@192.168.56.105

现在在Git BASH中通过root用户访问虚拟机时就不用输入密码了。

  • 通过docker machine在虚拟机上安装docker
    在Git BASH中执行如下指令就可以在虚拟上安装运行docker了:
docker-machine create \
  --driver generic \
  --generic-ip-address=192.168.56.103 \
  --generic-ssh-key ~/.ssh/id_rsa \
  manager
docker-machine create \
  --driver generic \
  --generic-ip-address=192.168.56.104 \
  --generic-ssh-key ~/.ssh/id_rsa \
  worker1
docker-machine create \
  --driver generic \
  --generic-ip-address=192.168.56.105 \
  --generic-ssh-key ~/.ssh/id_rsa \
  worker2

–driver generic解释:docker machine支持多种driver,这个driver表示通过何种方式创建虚拟机,比如openstack、virtualbox。这里的"generic"表示虚拟机已经创建好了,直接安装docker。参考https://docs.docker.com/machine/drivers/

–generic-ip-address=192.168.56.103解释:这个不用解释,就是远程虚拟机的IP地址。

–generic-ssh-key ~/.ssh/id_rsa解释:这个也不用解释,是ssh免密使用的公钥。

manager解释:远程虚拟机名称,这里指定的值与虚拟机原来的名称一致,如果不一致docker machine会用这个值替换原来的名称。

这条命令的总体执行过程如下,具体参考https://docs.docker.com/machine/drivers/generic/:

  • If docker is not running on the host, it is installed automatically.
  • It updates the host packages (apt-get update, yum update…).
  • It generates certificates to secure the docker daemon.
  • If the host uses systemd, it creates /etc/systemd/system/docker.service.d/10-machine.conf
  • The docker daemon restarts, thus all running containers are stopped.
  • The hostname is updated to fit the machine name.
    运行docker-machine ls确认结果,如下图:
    在这里插入图片描述
    可以看到docker machine把三台虚拟机都管理起来了。
    在manager虚拟机上执行docker指令,如下图:
    在这里插入图片描述
    docker-machine.exe env manager输出本地docker客户端访问远程docker服务时需要设置的环境变量,运行eval $(“C:\Users\lenovo\bin\docker-machine.exe” env manager)会自动设置这些环境变量,并且如图中红框所示,提示符发生了变化,这是因为已经完装了自动补全、提示脚本的原因。此时在git bash中执行docker命令访问的就是manager这台虚拟机上的docker。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以看出你在使用docker-machine命令时遇到了问题。错误提示"docker-machine不是内部或外部命令,也不是可运行的程序或批处理文件"通常是因为docker-machine没有正确安装或没有添加到系统的环境变量中。 要解决这个问题,你可以按照以下步骤进行操作: 1. 确保你已经正确安装docker-machine。你可以通过运行以下命令来检查docker-machine是否已经安装: ```shell docker-machine version ``` 如果没有安装,你可以按照官方文档提供的安装流程进行安装。 2. 如果docker-machine已经安装,但仍然出现错误提示,那么可能是因为docker-machine没有添加到系统的环境变量中。你可以按照以下步骤将docker-machine添加到系统的环境变量中: - 对于Windows系统: - 打开控制面板,点击"系统和安全",然后点击"系统"。 - 点击"高级系统设置",然后点击"环境变量"。 - 在"系统变量"下找到"Path"变量,点击"编辑"。 - 在弹出的窗口中,点击"新建",然后输入docker-machine安装路径(例如:C:\Program Files\Docker\Docker\resources\bin)。 - 点击"确定"保存修改,然后关闭所有窗口。 - 重新打开命令提示符窗口,尝试运行docker-machine命令,看是否能够正常执行。 - 对于Linux系统: - 打开终端,输入以下命令打开bash配置文件: ```shell sudo nano ~/.bashrc ``` - 在文件的末尾添加以下内容: ```shell export PATH=$PATH:/usr/local/bin/docker-machine ``` - 按下Ctrl+X,然后按下Y,最后按下Enter保存修改。 - 输入以下命令使修改生效: ```shell source ~/.bashrc ``` - 重新打开终端,尝试运行docker-machine命令,看是否能够正常执行。 - 对于Mac系统: - 打开终端,输入以下命令打开bash配置文件: ```shell nano ~/.bash_profile ``` - 在文件的末尾添加以下内容: ```shell export PATH=$PATH:/usr/local/bin/docker-machine ``` - 按下Ctrl+X,然后按下Y,最后按下Enter保存修改。 - 输入以下命令使修改生效: ```shell source ~/.bash_profile ``` - 重新打开终端,尝试运行docker-machine命令,看是否能够正常执行。 如果你按照以上步骤操作后仍然无法解决问题,请提供更多详细的错误信息以便我们进一步帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值