本文将教你在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 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" ]
相关主题 |