docker-machine初体验

  |   0 评论   |   724 浏览

前言

目前在做公有云相关的工作,于是来温习一下docker相关的知识。

背景

如果在阿里云上购买了100台ECS,但是怎么来快速部署应用呢?

我们知道docker是可以快速部署的。

所以一种方式就是在ECS上安装docker容器环境,然后将应用制作成应用镜像,在容器环境中运行应用镜像。

docker machine就是用来在ECS上安装docker容器环境的,管理应用镜像的。

本地初体验

环境

这里使用的mac环境,docker-machine版本为:

[note@abeffect ~]$ docker-machine -v
docker-machine version 0.15.0, build b48dc28d

创建virtualbox虚拟机

[note@abeffect ~]$ docker-machine create --engine-registry-mirror=https://xxxx.mirror.aliyuncs.com -d virtualbox default
Running pre-create checks...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v18.06.0-ce
(default) Downloading /Users/note/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.06.0-ce/boot2docker.iso...
(default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Creating machine...
(default) Copying /Users/note/.docker/machine/cache/boot2docker.iso to /Users/note/.docker/machine/machines/default/boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Found a new host-only adapter: "vboxnet0"
(default) Waiting for an IP...
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 boot2docker...
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 default

可以看到,此命令下载了 boot2docker.iso,然后基于此创建了一个虚拟主机。

boot2docker 是一个基于 Tiny Core Linux的轻量级的 linux 发行版,大小为45MB。其完全从内存运行,启动时间为秒级。

其中的--engine-registry-mirror=https://xxxx.mirror.aliyuncs.com为阿里云分配的专属registry加速器地址,这里需要填成自己的地址。

创建定制的虚拟机参数

也可以定制创建的虚拟机参数,如:

创建一个硬盘为6000MB, cpu为4核,内存为8G的虚拟机。

docker-machine create -d virtualbox \ 
--virtualbox-disk-size 6000 \
--virtualbox-cpu-count 4 \
--virtualbox-memory 8196 \
default

具体使用见:docker-machine create --help

其中-d对应的是驱动,这里使用的是virtualbox驱动。

查看虚拟机环境信息

[xuqian@fox ~]$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/note/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)

进入虚拟机

[note@abeffect ~]$ docker-machine ssh default
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 18.06.0-ce, build HEAD : 1f40eb2 - Thu Jul 19 18:48:09 UTC 2018
Docker version 18.06.0-ce, build 0ffa825

查看运行状态

退出虚拟机后,可以看下虚拟机状态

[note@abeffect ~]$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default   -        virtualbox   Running   tcp://192.168.99.100:2376           v18.06.0-ce

其它常用命令

//创建虚拟机
docker-machine create [OPTIONS] [arg...]

//移除虚拟机
docker-machine rm [OPTIONS] [arg...]

//登录虚拟机
docker-machine ssh [arg...]

//docker客户端配置环境变量
docker-machine env [OPTIONS] [arg...]

//检查机子信息
docker-machine inspect

//查看虚拟机列表
docker-machine ls [OPTIONS] [arg...]

//查看虚拟机状态
docker-machine status [arg...]  //一个虚拟机名称

//启动虚拟机
docker-machine start [arg...]  //一个或多个虚拟机名称

//停止虚拟机
docker-machine stop [arg...]  //一个或多个虚拟机名称

//重启虚拟机
docker-machine restart [arg...]  //一个或多个虚拟机名称

远程初体验

docker的客户端可执行文件和服务端的是分离的。客户端为docker,服务端为dockerd

如何使用本地的客户端docker连接远程的服务端呢?

拿到环境变量

[note@abeffect ~]$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/note/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)

连接服务器

eval $(docker-machine env default)
[note@abeffect ~]$ docker images
REPOSITORY                                                   TAG                 IMAGE ID            CREATED             SIZE
xxxxxx.aliyuncs.com/acs/agent                             0.10-cccccc             bbbbbb          25 hours ago          65.8MB

执行效果就相当于在远程服务器上执行了。

参考

评论

发表评论

validate