docker-machine 初体验

本贴最后更新于 2320 天前,其中的信息可能已经斗转星移

前言

目前在做公有云相关的工作,于是来温习一下 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

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

参考

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    492 引用 • 926 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...