Docker Machine快速安装Docker环境(二)

什么是Docker Machine?

Machine是一个简化安装Docker环境的工具。怎么简化法,例如,在ubuntu安装一个docker环境要按照U这个系统配置教程来装,哪天又换了CentOS系统,又要按照这个系统配置教程装。市场上主流Linux系统版本很多,每次安装岂不有些麻烦。使用Machine工具就简单很多,一两条命令即可在主流Linux系统上安装Docker环境,用户不用考虑什么操作系统。

另一方面,Machine还具备Docker工具管理什么虚拟化技术,Generic驱动默认管理LXC容器技术。我个人理解是这样的,具体Docker官方初衷设计如何,还需进一步探索。

注意:Machine安装docker环境中会因网络或其他情况造成安装失败,使用中发现,这种安装失败频率很高,感觉没有使用的价值,说白了,一个公司操作系统一般不会超过两个发行版,写个脚本一键安装也许会更方便!

1、先看下Docker Machine支持Docker以什么为虚拟化技术的驱动

2、安装Docker-Machine

操作系统:Ubuntu14.04_x64

docker-machine代码托管在github上,而二进制文件存储在AWS S3上,因此需要翻墙才可以下在,我也上传了一个到51cto,可以下载使用:http://down.51cto.com/data/2139681

下载后上传到Ubuntu系统的当前目录下,然后执行:

$ sudo mv docker-machine_linux-amd64 /usr/local/bin/docker-machine

如果能访问AWS S3存储,可以在root用户下直接运行下面这个命令:

$ curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64 >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine

当命令执行成功后,就可以查看到版本:

$ docker-machine version

docker-machine version 0.5.3, build 4d39a66

3、接下来用docker-machine命令快速创建Docker主机

注意:docker-machine通过ssh连接到Docker主机,从网上下载并安装docker工具,需要用root权限来安装,在ubuntu系统下,默认禁止root用户登录系统,因此需要先配置root允许SSH登录系统并免交互登录或指定私钥登录。另外,以下是在本机创建Docker主机,如果创建的Docker主机不在本机,则在预创建的Docker主机配置允许root SSH远程。

1) 允许root ssh登录(本机或docker主机操作)

$ sudo -i #切换到root用户

# vi /etc/ssh/sshd_config

PermitRootLogin yes    #修改此项为允许root登录

# service ssh restart

# passwd  #按提示设置root用户密码

2) 创建密钥对(machine主机操作)

# ssh-keygen  #一直回车

3) 免交互root登录系统(machine主机操作)

# ssh-copy-id root@192.168.18.5  #将公钥拷贝到docker主机

# ssh root@192.168.18.5   #如果不提示密码登录主机说明成功,可以继续下一步了

4) 启用visiblepw(machine主机操作)

# vi /etc/sudoers

Defaults   visiblepw

按wq!保存退出!惭愧,还不太明白这个visiblepw的实际作用。

如果不添加这个条,可能报下面的错:


1

2

3

4

5

6

7

8

9

10

Error creating machine: Error running provisioning: Something went wrong running an SSH command!

command sudo hostname ubuntu && echo "ubuntu" sudo tee /etc/hostname

err     : exit status 1

output  : sudo: no tty present and no askpass program specified

Sorry, try again.

sudo: no tty present and no askpass program specified

Sorry, try again.

sudo: no tty present and no askpass program specified

Sorry, try again.

sudo: 3 incorrect password attempts

5) 使用generic类型的驱动,创建一台docker主机,名字为18.5

# docker-machine create -d generic --generic-ip-address=192.168.18.5 --generic-ssh-user=root 18.5


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Creating CA: /root/.docker/machine/certs/ca.pem

Creating client certificate: /root/.docker/machine/certs/cert.pem

Running pre-create checks...

Creating machine...

(18.5) No SSH key specified. Connecting to this machine now and in the future will require the ssh agent to contain the appropriate key.

Waiting for machine to be running, this may take a few minutes...

Machine is running, waiting for SSH to be available...

Detecting operating system of created instance...

Detecting the provisioner...

Provisioning with ubuntu(upstart)...

Installing Docker...

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 Docker to this machine, run: docker-machine env ubuntu

参数说明:

-d  driver  #指定基于什么虚拟化技术的驱动

--generic-ip-address  #指定要安装宿主机的IP,这里是本地的IP。也就是说,你也可以给别的主机装Docker,前提是SSH root用户免交互登录或私钥认证。

--generic-ssh-user   #SSH的用户

--generic-key-key   #指定私钥来实现免交互登录

等待数分钟后,docker就安装成功了,可以通过docker命令管理容器了。如果安装失败多尝试两次!

# docker-machine ls


1

2

NAME      ACTIVE   DRIVER    STATE     URL                         SWARM   DOCKER    ERRORS

18.252    -        generic   Running   tcp://192.168.18.252:2376           v1.9.1


针对Docker主机开启root ssh登录配置,简单写了个脚本,方面操作:

$ vi conf_root_ssh_remote.sh


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#!/bin/bash

if [ $USER != "root" ]; then

    echo "Please use root account operation or sudo!"

    exit 

fi

if ! $(which expect >/dev/null); then

    apt-get install expect -y

fi

# 设置SSH允许root远程登录

sed -r -i 's/(PermitRootLogin).*/\1 yes/' /etc/ssh/sshd_config

service ssh restart >/dev/null

# 设置root用户密码

while truedo

    read -p "Please enter you account to set the root password: " ROOT_PASS

    if [ -n "$ROOT_PASS" ]; then

        break

    else

        echo "Password can not be empty!"

        continue

    fi

done

expect -c "

    spawn passwd root

    expect {

        \"Enter new UNIX password:\" {send \"$ROOT_PASS\r\"; exp_continue}

        \"Retype new UNIX password:\" {send \"$ROOT_PASS\r\"}

    }

    expect eof #文件结束

" >/dev/null

echo "The root account password is: $ROOT_PASS"

$ sudo bash conf_root_ssh_remote.sh

The root account password is: 123456

说明:在预安装Docker主机上执行,执行成功后,预安装Docker主机上就不做其他操作了。

docker-machine命令:

  • help  查看帮助信息
  • active  查看活动的Docker主机
  • config  输出连接的配置信息
  • create  创建一个Docker主机
  • env  显示连接到某个主机需要的环境变量
  • inspect  输出主机更新信息
  • ip  获取Docker主机地址
  • kill  停止某个Docker主机
  • ls  列出所有管理的Docker主机
  • regenerate-certs  为某个主机重新成功TLS认证信息
  • restart  重启Docker主机
  • rm  删除Docker主机
  • scp  在Docker主机之间复制文件
  • ssh  SSH到主机上执行命令
  • start  启动一个主机
  • status  查看一个主机状态
  • stop  停止一个主机
  • upgrade  更新主机Docker版本为最新
  • url  获取主机的URL
时间: 2024-09-19 09:17:40

Docker Machine快速安装Docker环境(二)的相关文章

《第一本Docker书(修订版)》——第2章 安装Docker 2.1安装Docker的先决条件

第2章 安装Docker Docker的安装既快又简单.目前,Docker已经支持非常多的Linux平台,包括Ubuntu和RHEL(Red Hat Enterprise Linux,Red Hat企业版Linux).除此之外,Docker还支持Debian.CentOS.Fedora.Oracle Linux等衍生系统和相关的发行版.如果使用虚拟环境,甚至也可以在OS X和Microsoft Windows中运行Docker. 目前来讲,Docker团队推荐在Ubuntu.Debian或者RH

PHP环境安装套件:快速安装LAMP环境

LAMP是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件: Linux,操作系统: Apache,网页服务器: MySQL,数据库管理系统(或者数据库服务器): PHP 和有時 Perl 或 Python,脚本语言. 虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的廉价和普遍,这个组合开始流行(大多数Linux发行版本捆绑了 这些软件).当一起使用的时候,它们表现的像一个具有活力的解决方案包. 其他的方案包有苹果的 WebObjects(最初是应用

Centos 7 快速安装 Docker

安装 Docker [root@localhost~]# yum install docker 启动 docker 服务 [root@localhost~]# systemctl start docker.service [root@localhost~]# systemctl enable docker.service 安装 centos 镜像 [root@localhost~]# docker pull centos Using default tag: latest Trying to p

Docker基础之三: 安装docker+HelloWorld

安装Docker (提示:对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者社群里面.) Docker最核心的程序是Docker Engine,根据参数,它既可以作为后台daemon运行,也可以作为命令行工具使用. 1 Linux上安装 Docker本身是基于linux内核的,因此只要内核版本足够新,一般大于3.10左右,就可以运行.各种系统的安装方式基本相同,只是针对各系统的进程管理或者目录结构略有不同.下面是docker在linu

CentOS 7系统YUM快速安装LNMP环境教程

源码编译安装 LNMP 环境虽然便于自定义,但是对于小型服务器来说,漫长的编译时间让人无法等待.如果能在 10 分钟后内搞定环境安装,再好不多了. 那么如何在 10 分钟内快速安装完 LNMP 环境呢,答案是 使用 YUM 安装. 什么 YUM ? 官网给出的解释 yum is a software package manager that installs, updates, and removes packages on RPM-based systems. It automatically

ubuntu 13.10编译安装mono环境(二)_Linux

准备工作 先在VS2012上编译一个winform,代码如下: using System; using System.Windows.Forms; namespace FormsTest { static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.S

CentOS 下载快速安装nginx环境的教程

Ubuntu下安装nginx,直接apt-get install nginx就行了,很方便. 但是今天装了CentOS6.2,直接yum install nginx不行,要先处理下源,下面是安装完整流程,也十分简单: 1.CentOS 6,先执行: rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm 2,查看yum的nginx信息 []# yum i

如何使用Docker Machine创建Swarm集群

本文讲的是如何使用Docker Machine创建Swarm集群,[编者的话]之前,Docker的安装流程非常复杂,用户需要登录到相应的主机上,根据官方的安装和配置指南来安装Docker,并且不同的操作系统的安装步骤也是不一样的.而有了Machine后,不管是在笔记本.虚拟机还是公有云实例上,用户仅仅需要一个命令就轻松搞定安装.当然那你需要先安装Docker Machine.Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker

安装 Docker Machine - 每天5分钟玩转 Docker 容器技术(45)

前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和销毁,相关容器会通过网络相互通信,无论它们是否位于相同的 host. 对于这样一个 multi-host 环境,我们将如何高效地进行管理呢?我们面临的第一个问题是:为所有的 host 安装和配置 docker. 在前面我们手工安装了第一个 docker host,步骤包括: 安装 https CA 证书 添加 GPG ke