Docker三剑客:Compose、Machine和Swarm(二)

Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。

    Docker Machine 是一个工具,它允许你在虚拟宿主机上安装 Docker Engine ,并使用 docker-machine 命令管理这些宿主机。你可以使用 Machine 在你本地的 Mac 或 Windows box、公司网络、数据中心、或像 AWS 或 Digital Ocean 这样的云提供商上创建 Docker 宿主机。

    使用 docker-machine 命令,你可以启动、审查、停止和重新启动托管的宿主机、升级 Docker 客户端和守护程序、并配置 Docker 客户端与你的宿主机通信。
    为什么要使用它?

    Docker Machine 使你能够在各种 Linux 上配置多个远程 Docker 宿主机。
    此外,Machine 允许你在较早的 Mac 或 Windows 系统上运行 Docker,如上一主题所述。
    Docker Machine 有这两个广泛的用例。

        我有一个较旧的桌面系统,并希望在 Mac 或 Windows 上运行 Docker

    如果你主要在不符合新的 Docker for Mac 和 Docker for Windows 应用程序的旧 Mac 或 Windows 笔记本电脑或台式机上工作,则需要 Docker Machine 来在本地“运行Docker”(即Docker Engine)。在 Mac 或 Windows box 中使用 Docker Toolbox 安装程序安装 Docker Machine 将为 Docker Engine 配置一个本地的虚拟机,使你能够连接它、并运行 docker 命令。

        我想在远程系统上配置 Docker 宿主机

    Docker Engine Linux 系统上原生地运行。如果你有一个 Linux 作为你的主系统,并且想要运行 docker 命令,所有你需要做的就是下载并安装 Docker Engine 。然而,如果你想要在网络上、云中甚至本地配置多个 Docker 宿主机有一个有效的方式,你需要 Docker Machine。

    无论你的主系统是 Mac、Windows 还是 Linux,你都可以在其上安装 Docker Machine,并使用 docker-machine 命令来配置和管理大量的 Docker 宿主机。它会自动创建宿主机、在其上安装 Docker Engine 、然后配置 docker 客户端。每个被管理的宿主机(“machine”)是 Docker 宿主机和配置好的客户端的结合。
    Docker Engine 和 Docker Machine 有什么区别?

    当人们说“Docker”时,他们通常是指 Docker Engine,它是一个客户端 - 服务器应用程序,由 Docker 守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信(通过封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run 、docker ps 来列出正在运行的容器、docker images 来列出镜像,等等。

    Docker Machine 是一个用于配置和管理你的宿主机(上面具有 Docker Engine 的主机)的工具。通常,你在你的本地系统上安装 Docker Machine。Docker Machine有自己的命令行客户端 docker-machine 和 Docker Engine 客户端 docker。你可以使用 Machine 在一个或多个虚拟系统上安装 Docker Engine。

    这些虚拟系统可以是本地的(就像你在 Mac 或 Windows 上使用 Machine 在 VirtualBox 中安装和运行 Docker Engine 一样)或远程的(就像你使用 Machine 在云提供商上 provision Dockerized 宿主机一样)。Dockerized 宿主机本身可以认为是,且有时就称为,被管理的“machines”。

Docker Machine 安装

下载docker machine

# curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && install /tmp/docker-machine /usr/local/bin/docker-machine

#完成后,查看版本信息。
# docker-machine -v
# docker-machine version 0.14.0, build 89b8332

执行docker-machine create --driver virtualbox default 命令去创建virtualbox时,可能会出现如下几个错误提示,此处做了相关的解决:

错误提示1:Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"

解决方法:配置virtualbox的官方仓库

# wget -q https://www.virtualbox.org/download/oracle_vbox.asc
# rpm --import oracle_vbox.asc
# vi /etc/yum.repos.d/virtualbox.repo 
[virtualbox]
name=Oracle Linux / RHEL / CentOS-releasever /basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
# yum repolist #重新加载仓库
# yum search VirtualBox  #搜索virtualbox镜像
# yum install VirtualBox-5.2 #安装VirtualBox5.2镜像
# sudo /sbin/vboxconfig   #重新加载virtualbox服务

错误提示2:curl: (60) Peer's Certificate has expired.时间不一致造成的,安装chrony同步时间即可
解决方法:安装chrony同步时间

# yum -y install chrony
# systemctl start chronyd
# chronyc sources

错误提示3:Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"

解决方法:首先保证bios是开启虚拟化的,然后一般虚拟化主机ESXI都会开BIOS中的CPU虚拟化技术, INTEL叫VT-x,AMD的叫AMD-V。
ESXI6.0 CPU虚拟化是在web端设置的,在客户端vsphere中没有这个设置,切记!再次创建主机就正常了。具体操作步骤如下:

docker machine创建VirtualBox示例

查看是否存在可用的主机
[root@node4 ~]# docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS

创建一个主机:
[root@node4 ~]# docker-machine create --driver virtualbox default

这个命令会下载 boot2docker,基于 boot2docker 创建一个虚拟主机。boot2docker 是一个轻量级的 linux 发行版,基于专门为运行 docker 容器而设计的 Tiny Core Linux 系统,完全从 RAM 运行,45Mb左右,启动时间约5s。

再次查看服务列表
[root@node4 ~]# docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default   *        virtualbox   Running   tcp:#192.168.99.100:2376           v17.12.1-ce

发现已经存在一个虚拟主机

创建主机成功后,可以通过 env 命令来让后续操作对象都是目标主机。
[root@node4 ~]# docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp:#192.168.99.100:2376"
export DOCKER_CERT_PATH="C:\Users\hkrt-neo\.docker\machine\machines\default"
export DOCKER_MACHINE_NAME="default"
export COMPOSE_CONVERT_WINDOWS_PATHS="true"
# Run this command to configure your shell:
# eval $("D:\Program Files\Docker Toolbox\docker-machine.exe" env default)

相当于配置了一个环境变量 default,后续根据提示在命令行输入命令之后就可以操作 default 主机。

可以通过 SSH 登录到主机

[root@node4 ~]# docker-machine ssh default
docker@default:~$ docker --version
Docker version 17.12.1-ce, build 7390fc6
docker@default:~$ exit
[root@node4 ~]# 

连接到主机之后你就可以在其上使用 Docker 了,退出虚拟机使用命令:exit

Docker Machine常用命令

#创建虚拟机
docker-machine create [OPTIONS] [arg...]

#移除虚拟机
docker-machine rm [OPTIONS] [arg...]

#登录虚拟机
docker-machine ssh [arg...]

#docker客户端配置环境变量
docker-machine env [OPTIONS] [arg...]

#检查机子信息
docker-machine inspect

#查看虚拟机列表
docker-machine ls [OPTIONS] [arg...]

#查看虚拟机状态
docker-machine status [arg...]  #一个虚拟机名称

#启动虚拟机
docker-machine start [arg...]  #一个或多个虚拟机名称

#停止虚拟机
docker-machine stop [arg...]  #一个或多个虚拟机名称

#重启虚拟机
docker-machine restart [arg...]  #一个或多个虚拟机名称

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值