云网牛站
所在位置:首页 > Linux教程 > 在Linux中通过Docker Machine快速安装Docker环境

在Linux中通过Docker Machine快速安装Docker环境

2018-07-12 11:00:18作者:hi-linux稿源:运维之美

本文将教你在Linux等多平台下通过Docker Machine快速安装Docker环境。

 

Docker Machine简介

Docker Machine是一款简化安装Docker环境的工具。市场上主流Linux系统版本很多,使用Machine工具就简单很多,一两条命令即可在主流Linux系统上安装Docker环境,用户不用考虑什么操作系统。Docker Machine还具备Docker工具管理虚拟化技术,Generic驱动默认管理LXC容器技术。

Docker Machine 支持多种后端驱动,包括虚拟机、本地主机和云平台等。Docker Machine目前支持的驱动:

amazonec2

azure

digitalocean

exoscale

generic

google

none

openstack

rackspace

softlayer

virtualbox

vmwarevcloudair

vmwarevsphere

 

安装

Docker Machine可以在多种操作系统平台上安装,包括Linux、Mac OS以及 Windows。

1.针对Linux/Mac OS系统

在Linux/Mac OS 上的安装十分简单,推荐从官方Release库直接下载编译好的二进制文件即可。

例如在Linux 64位系统上直接下载对应的二进制包:

$ curl -L https://github.com/docker/machine/releases/download/v0.15.0/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&

chmod +x /tmp/docker-machine &&

sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

又例如OS X中:

$ curl -L https://github.com/docker/machine/releases/download/v0.15.0/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&

chmod +x /usr/local/bin/docker-machine

2.针对Windows系统

Windows下面要复杂一些,首先需要安装msysgit。

msysgit是Windows下的git客户端软件包,会提供类似Linux下的一些基本的工具,例如ssh等。

安装之后,启动msysgit的命令行界面,仍然通过下载二进制包进行安装。

On Windows with git bash:

$ mkdir -p "$HOME/bin" &&

curl -L https://github.com/docker/machine/releases/download/v0.15.0/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" &&

chmod +x "$HOME/bin/docker-machine.exe"

完成后,查看版本信息,验证运行正常。

$ docker-machine -v

docker-machine version 0.15.0, build a650a40

 

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

每个命令又带有不同的参数,查看具体的用法可以通过

$ docker-machine <COMMAND> -h

 

使用

1.创建Docker主机实例

这里使用的Docker主机使用的是Ubuntu(docker-machine 0.7版本不支持CentOS7以下版本)

docker-machine通过ssh免交互登录或指定私钥登录连接到Docker主机,从网上下载并安装docker工具,需要用root权限来安装。

2.配置root权限

1].如果用root用户

在ubuntu系统下,默认禁止root用户登录系统,因此需要先配置root允许SSH登录系统

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

#切换到root用户

$ sudo -i 

#修改此项为允许root登录

$ sed -i -e "s/PermitRootLogin without-password/PermitRootLogin yes/g" /etc/ssh/sshd_config

#重启SSH

$ service ssh restart

按提示设置root用户密码

$ passwd

2].如果用具有sudo权限的普通用户

以mike为例

配置为免密码sudo:

$ vim /etc/sudoers.d/nopasswdsudo 

mike ALL=(ALL) NOPASSWD : ALL

注:某些Ubuntu版本下sudo免密码的方法略有不同。

 

配置ssh免交互登录

首先确保本地主机可以通过user账号的key直接ssh到目标主机。

以root为例

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

$ ssh-keygen -t rsa  #一直回车

$ mv id_rsa.pub authorized_keys

$ chmod 600 authorized_keys

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

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

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

 

启用visiblepw

machine主机操作

$ visudo

Defaults   visiblepw

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

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

 

使用generic类型的驱动创建Docker主机

创建一台Docker主机,命名为docker-web。

$ docker-machine create -d generic --generic-ip-address=192.168.119.105 --generic-ssh-user=mike docker-ubuntu-web

注意:Docker Machine安装docker环境中会因网络或其他情况造成安装失败(国内连官网速度很慢),可按下面的方法使用国内镜像源进行安装。

 

使用daoclound镜像安装

$ docker-machine create -d generic --generic-ip-address=192.168.119.105 --generic-ssh-user=mike --engine-registry-mirror http://xxxxxx.m.daocloud.io  docker-ubuntu-web

Running pre-create checks...

Creating machine...

(docker-ubuntu-web) 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...

Detecting operating system of created instance...

Waiting for SSH to be available...

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 your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env docker-ubuntu-web

参数说明:

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

--generic-ip-address  #指定要安装宿主机的IP,前提是SSH root用户免交互登录或私钥认证。

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

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

$ docker-machine ls

NAME                ACTIVE   DRIVER    STATE     URL                          SWARM   DOCKER    ERRORS

docker-ubuntu-web   -        generic   Running   tcp://192.168.119.105:2376           v1.11.0

创建主机成功后,可以通过env命令来让后续操作对象都是目标主机。

$ docker-machine env docker-ubuntu-web

SSH到docker主机

$ docker-machine ssh  docker-ubuntu-web

 

在不使用驱动的情况新增一个主机

我们可以在不使用驱动的情况往Docker增加一台主机,只需要一个URL。它可以使用一个已有机器的别名,所以我们就不需要每次在运行docker命令时输入完整的URL了。

$ docker-machine create -d none --url=tcp://192.168.119.105:2376 docker-ubuntu-web

$ docker-machine regenerate-certs docker-ubuntu-web

注:进行证书注册时会出现错误,造成注册失败并不能正常管理docker主机。

 

在Docker Machine中使用Mirror服务

使用daoclound镜像安装

新建时通过指定--engine-registry-mirror参数

$ docker-machine create -d generic --generic-ip-address=192.168.119.105 --generic-ssh-user=mike --engine-registry-mirror http://xxxxxx.m.daocloud.io  docker-ubuntu-web

 

修改已存在docker主机

以主机名为docker-ubuntu-web的为例。

修改~/.docker/machine/machines/docker-ubuntu-web/config.json文件,编辑RegistryMirror字段,插入你的镜像地址,然后再重启你就会在/var/lib/boot2docker/profile看见一个--registry-mirror http://xxxxxx.m.daocloud.io了。

运行:$ vim  ~/.docker/machine/machines/docker-ubuntu-web/config.json

"RegistryMirror": [

"http://xxxxxx.m.daocloud.io"

]

 

相关主题

给Docker配置官方国内加速镜像

精选文章
热门文章