前言
目前在做公有云相关的工作,于是来温习一下 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
执行效果就相当于在远程服务器上执行了。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于