Docker三剑客之docker-machine(自动化部署docker)

docker-machine是什么?

  • Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。
  • Docker Machine支持在常规Linux操作系统、虚拟化平台、openstack、公有云等不同环境下安装配置docker host。
  • Docker Machine 项目基于 Go 语言实现,目前在 Github 上的维护地址: https://github.com/docker/machine/
    在这里插入图片描述
Docker 与 Docker Machine 的区别
  • Docker 是一个 Client-Server 架构的应用,Docker是大家对Docker Engine简称
  • Docker包括以下三个部分:
    1 Docker daemon
    2 一套与 Docker daemon 交互的 REST API
    3 一个命令行客户端

下图很清晰的展示了它们之间的关系:
在这里插入图片描述

  • Docker Machine 则是一个安装和管理 Docker 的工具。它有自己的命令行工具:docker-machine

docker-machine命令

先docker-machine --help           #查看一下所有docker-machine命令    

在这里插入图片描述

实验环境

主机名(IP)功能
server1(172.25.11.1)docker-machine管理端,装有docker服务
server2(172.25.11.2)没有docker服务
server3(172.25.11.3)没有docker服务

实验目的

  • 在server1上面利用docker-machine给server2和server3自动部署docker服务
  • Docker Machine 创建 Docker 主机, Docker 一个官方工具 Docker Machine(也是 Docker 三剑客之一),其作用就是快速帮助我们搭建 Docker 主机环境,比如我们要使用 Docker Swarm就必须有很多的 Docker 主机来进行操作,Docker Machine 就是最理想的工具。

创建machine

  • machine指的是docker daemon主机,其实就是在host上安装和部署docker。
  • 创建machine要求免密登陆远程主机:
ssh-keygen
ssh-copy-id  目标ip
  • 创建主机:(离线安装需要在目标主机提前安装好docker软件包)
docker-machine create --driver generic --generic-ip-address=172.25.0.12 server2
创建的大概流程
  • ssh免密登陆远程主机
  • 安装docker软件包
  • 复制证书
  • 配置docker daemon
  • 启动docker
server1
  • 搭建docker的yum源,下载并开启服务,这里不再赘述。
  • 在server1上面部署docker-machine,下载二进制可执行文件,重命名并授予执行权限。
[root@server1 ~]# mv docker-machine-Linux-x86_64-0.16.1 /usr/local/bin/
[root@server1 ~]# mv /usr/local/bin/docker-machine-Linux-x86_64-0.16.1 /usr/local/bin/docker-machine
[root@server1 ~]# chmod +x /usr/local/bin/docker-machine

在这里插入图片描述

  • 查看帮助说明以及版本。
[root@server1 ~]# docker-machine --help
[root@server1 ~]# docker-machine --v
docker-machine version 0.16.1, build cce350d7

在这里插入图片描述

  • 查看本机已经安装的docker的版本,修改html文件会用到。
[root@server1 ~]# docker version

在这里插入图片描述

  • 三台主机做好解析,实现server1对server2~3的免密登陆。
[root@server1 ~]# ssh-keygen 
ssh-copy-id server2:
ssh-copy-id server3:
ssh server2
ssh server3
  • 让物理机联网,从网上拉取html文件。
[root@foundation11 html]# wget https://get.docker.com/

在这里插入图片描述

  • 浏览器中可以访问。
    在这里插入图片描述
  • 修改此html文件内容,共修改三处,docker安装版本以及yum源的位置。
[root@foundation11 html]# vim index.html 
  • 给server2和server3安装docker的时候要使用真机的共享yum源
    在这里插入图片描述

  • 安装docker的版本要和yum源里面的版本一致
    在这里插入图片描述

  • 修改server2和server3的发行版本文加,将rhel改为centos。

[root@server2 ~]# vim /etc/os-release
[root@server3 ~]# vim /etc/os-release 

在这里插入图片描述

  • 修改server2和3的yum源配置文件。
[root@server2 ~]# vim /etc/yum.conf 
[root@server3 ~]# vim /etc/yum.conf

在这里插入图片描述

  • 给server2和server3自动部署docker。
[root@server1 ~]# docker-machine create --driver generic  --engine-install-url="http://172.25.11.250" --generic-ip-address=172.25.11.2 server2
[root@server1 ~]# docker-machine create --driver generic  --engine-install-url="http://172.25.11.250" --generic-ip-address=172.25.11.3 server3
  • 安装成功!
    在这里插入图片描述
  • 查看服务的状态。
[root@server2 yum.repos.d]# systemctl status docker
[root@server3 ~]# systemctl status docker

在这里插入图片描述
ps:如果安装失败可以删除server2,删除生成的.repo文件,排好错之后再试

[root@server1 ~]# docker-machine ls
[root@server1 ~]# docker-machine rm server2

[root@server2 ~]# cd /etc/yum.repos.d/
[root@server2 yum.repos.d]# ls
172.25.11.250_docker.repo  redhat.repo  rhel7.repo
[root@server2 yum.repos.d]# rm -fr 172.25.11.250_docker.repo

在这里插入图片描述

  • server2和server3生成的配置文件:
    从配置文件中可以看出,docker daemon启用了TLS验证功能,docker-machine已经为其生成好了所需的证书文件。
[root@server2 ~]# cat /etc/systemd/system/docker.service.d/10-machine.conf
[root@server3 ~]# cat /etc/systemd/system/docker.service.d/10-machine.conf

在这里插入图片描述

管理machine

  • 显示访问server2和server3主机的所需的环境变量信息。
[root@server1 ~]# docker-machine env server2
[root@server1 ~]# docker-machine env server3

在这里插入图片描述

  • 连接远程docker主机时需要执行以下命令,但不方便:
 docker -H tcp://172.25.11.2:2376 ps

在这里插入图片描述

  • 根据环境变量的信息提示执行eval $(docker-machine env server2),可以直接切入目标主机(此时只切换docker环境,可以通过不同主机导入的镜像不同或运行的容器不同来区分)。
  • 安装bash脚本,使得行提示符更加人性化。
[root@server1 ~]# cd /etc/bash_completion.d/
lftp 172.25.11.250:/pub/docker/docker-machine> mget *.bash
[root@server1 bash_completion.d]# source docker-machine.bash 
[root@server1 bash_completion.d]# source docker-machine-prompt.bash 
[root@server1 bash_completion.d]# source docker-machine-wrapper.bash

在这里插入图片描述

  • 修改用户家目录下的环境变量文件
[root@server1 ~]# vim .bashrc   #加入:
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
[root@server1 ~]# source .bashrc
# 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
      wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
      done
# vim ~/.bashrc
      PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
  • 从server1切换到server2或server3:
[root@server1 ~]# docker-machine use server2
Active machine: server2
[root@server1 ~ [server2]]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@server1 ~ [server2]]# docker-machine use server3
Active machine: server3
[root@server1 ~ [server3]]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

在这里插入图片描述

  • 切回server1用命令:
[root@server1 ~ [server3]]# docker-machine use -u

在这里插入图片描述

总结:docker-machine子命令

docker-machine upgrade  server2	更新docker版本
docker-machine config  server2	查看machine配置
docker-machine scp 			可以在machine中复制文件
docker-machine ssh			连接machine
docker-machine rm			删除machine
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值