【赵渝强老师】使用Docker Machine远程管理Docker

简介: Docker Machine 是 Docker 官方提供的远程管理工具,可帮助开发人员在远程主机或虚拟机上安装和管理 Docker 环境。本文介绍了如何在远程主机上安装 Docker 并配置免密码登录,以及使用 Docker Machine 管理远程 Docker 主机的常用命令。

b101.png

Docker Machine是Docker官方提供的一个远程管理工具。通过使用Docker Machine,可以帮助开发人员在远程主机上安装Docker;或者在远程的虚拟主机上直接安装虚拟机并在虚拟机中安装Docker。Docker Machine还提供了相应的命令来管理这些远程的Docker环境和虚拟机。下图是官方提供的一张关于Docker Machine的图片,很形象地说明了Docker Machine的功能。

 

   

视频讲解如下:


一、在远程宿主机上安装Docker

   

安装好了Docker Machine以后,就可以通过命令“docker-machine”来管理远程主机上的Docker环境了。参考下表单独准备一台新的虚拟机node2,下表列出了目前使用的三台虚拟机的信息。由于已经在master主机上安装好了Docker Machine,便可以通过“docker-machine”的命令远程在node2上安装Docker,并且管理它。


   

由于Docker Machine在进行远程管理的时候,需要免密码登录的支持。因此在使用“docker-machine”命令之前,需要先配置主机之间的免密码登录,然后才能使用Docker Machine。

1.1  配置主机间的免密码登录

   

免密码登录采用的不对称加密的认证方式,需要产生密钥对,即:一个公钥和一个私钥,其本质就是两个字符串。公钥负责加密;而私钥负责解密。下图为大家展示了免密码登录的过程。图中我们想从Server A免密码登录到Server B,这时候我们就可以从Server A到Server B的免密码登录。


   提示:免密码登录是单向的。如果想反过来,从Server B免密码登录Server A上,也需要单独进行配置。

   

在了解了免密码登录的登录过程后,下面的步骤演示了如何配置从master节点到node2节点的免密码登录。


(1)在master节点上生成公钥与私钥,执行下面的命令:

ssh-keygen -t rsa


(2)将master节点的公钥负责到node2上,执行下面的命令:

ssh-copy-id -i .ssh/id_rsa.pub root@192.168.79.13

提示:由于还没有完成免密码登录的配置,因此这一步要输入node2的密码。


(3)在master节点上输入下面的命令,验证免密码登录。这时候发现将不需要输入node2的命名便可以直接从master节点登录到node2节点。

ssh 192.168.79.13


1.2  使用“docker-machine”在远程主机上安装Docker

   

在配置好了master节点与node2节点之间的免密码登录后,便可以在master节点上使用“docker-machine”命令在node2上远程安装Docker。执行下面的步骤:


(1)在master节点上,执行下面的命令,如下图所示。

docker-machine create \
-d generic \
--generic-ip-address=192.168.79.13 \
--generic-ssh-user=root \
--generic-ssh-key /root/.ssh/id_rsa node2

   

其中的参数:

  • -d:表示使用的驱动类型,官方支持的驱动有:amazonec2、azure、digitalocean、exoscale、generic、google、hyperv、none、openstack、rackspace、softlayer、virtualbox、vmwarevcloudair、vmwarefusion、vmwarevsphere。
  • --generic-ip-address:远端主机的IP地址。
  • --generic-ssh-user:远程登录的用户名。
  • --generic-ssh-key:免密码登录的私钥文件。
  • node2:远端主机的别名。

提示:这条命令将会执行很长的时间。

 

当“docker-machine create”命令成功执行完成后,通过打印输出的日志可以看到在远程主机上已经成功安装了Docker并且启动成功,如下图所示。



(2)在node2节点上,执行下面的命令检查Docker的版本信息。

docker version

提示:在执行“docker-machine create”命令时,将会把远端主机的主机名修改为指定的别名。由于这里使用的别名是“node2”,所以看不出区别。


(3)在master节点上,执行下面的命令查看由Docker Machine管理的远程主机信息,如下图所示。


二、管理远程的Docker主机

   

下面将通过几个具体的示例来演示一些常用命令的使用方式和它们输出的结果信息。


  • 下面的命令将显示远端主机的环境变量信息,如下图所示。
docker-machine env node2

   

这条命令输出的内容可以作为环境变量参数来设置一些Docker客户端,从而让本机的Docker客户端可以与远程的Docker服务器通信。其中,node2是我们之前创建的远端服务器的名字。


  • 下面的命令将设置本地的环境变量,以操作远端主机node2上Docker守护进程。
eval $(docker-machine env node2)

   

该命令是运行在当前的命令行终端中,但使用该命令后接下来运行的docker命令操作的都是远端主机。例如:在master主机上执行该命令后,尝试拉取一个Nginx镜像。这时将在远端主机的node2上完成Nginx镜像的拉取,如下图所示。



  • 下面的命令将启动、停止和重启远端主机上的Docker环境。
docker-machine start/stop/restart node2

提示:generic驱动类型不支持stop命令。


  • 下面的命令将查看远端主机上的Docker状态。
docker-machine status node2


  • Docker Machine同时也支持SSH登录,下面的命令将从master主机上以SSH方式登录到远端主机node2上。
docker-machine ssh node2



相关文章
|
5月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
527 6
|
7月前
|
Linux 数据安全/隐私保护 虚拟化
【赵渝强老师】Docker的私有镜像仓库:Harbor
Harbor是由VMware开发的企业级Docker镜像仓库管理工具,支持权限管理、LDAP集成、日志审计、镜像复制及中文界面等功能。本文详细介绍了Harbor的安装、配置及在Docker中的实战应用流程,涵盖环境准备、部署步骤、基础操作和镜像上传等内容,适用于容器化应用的镜像管理场景。
660 4
|
存储 安全 应用服务中间件
【赵渝强老师】Docker的体系架构
Docker采用客户端-服务器架构,客户端与守护进程通过sockets或RESTful API通信。守护进程负责构建、运行和分发容器。镜像仓库(如Docker Hub和Harbor)存储镜像,容器则基于镜像创建,是运行应用的安全平台。
310 2
【赵渝强老师】Docker的体系架构
|
10月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
493 19
【赵渝强老师】数据库不适合Docker容器化部署的原因
|
9月前
|
存储 数据可视化 数据安全/隐私保护
【赵渝强老师】Docker的图形化管理工具
本文介绍了三种主流的Docker图形化管理工具:Docker UI、Portainer和Shipyard。Docker UI(现名UI for Docker)适合初学者,支持容器管理并可显示容器关系图;Portainer轻量级且功能全面,支持单机与集群管理;Shipyard专注于多主机集群管理,提供镜像、容器及节点管理功能,并包含engine和rethinkdb两个核心组件。文中还通过图文结合的方式展示了各工具的安装与使用方法。
808 5
【赵渝强老师】Docker的图形化管理工具
|
关系型数据库 数据管理 应用服务中间件
【赵渝强老师】Docker的数据持久化
在生产环境中使用Docker时,为了实现数据的持久化和共享,可以通过数据卷(Data Volumes)和数据卷容器(Data Volume Containers)两种方式来管理数据。数据卷是一个独立于容器的挂载目录,可以跨多个容器共享和重用。数据卷容器则是一种特殊容器,用于维护数据卷,便于数据迁移和共享。本文通过示例详细介绍了这两种方法的使用步骤。
278 1
|
Kubernetes 负载均衡 Linux
【赵渝强老师】Docker三剑客
本文介绍了Docker容器中的三个重要工具:Docker Compose、Docker Machine 和 Docker Swarm。Docker Compose用于定义和运行多容器应用,通过YAML文件简化容器管理。Docker Machine支持远程主机上的Docker安装和管理,适用于跨平台使用。Docker Swarm则提供集群管理功能,实现负载均衡和故障迁移,适合大规模部署。文中还提供了相关示例和架构图,帮助读者更好地理解和使用这些工具。
310 2
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
326 1
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
203 0
|
调度 Docker 容器
【赵渝强老师】Docker Swarm集群的体系架构
Docker Swarm自1.12.0版本起集成至Docker引擎,无需单独安装。它内置服务发现功能,支持跨多服务器或宿主机创建容器,形成集群提供服务。相比之下,Docker Compose仅限于单个宿主机。Docker Swarm采用主从架构,Swarm Manager负责管理和调度集群中的容器资源,用户通过其接口发送指令,Swarm Node根据指令创建容器运行应用。
298 0