简介、实践
一、Docker Machine 简介
Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。
Docker Machine支持在常规Linux操作系统、虚拟化平台、openstack、公有云等不同环境下安装配置docker host。
Docker Machine 项目基于 Go 语言实现,目前在 Github 上的维护地址: https://github.com/docker/machine/
二、Docker Machine实践
2.1Docker Machine安装
[root@server1 ~]# lftp 172.25.15.250
lftp 172.25.15.250:~> cd pub/docker/machine/
cd ok, cwd=/pub/docker/machine
lftp 172.25.15.250:/pub/docker/machine> get docker-machine-Linux-x86_64-0.16.1 #下载docker-machine
28201440 bytes transferred
lftp 172.25.15.250:/pub/docker/machine> exit
[root@server1 ~]# ls
auth harbor
busybox.tar harbor-offline-installer-v1.10.1.tgz
convoy lxcfs-2.0.5-3.el7.centos.x86_64.rpm
convoy.tar.gz mario.tar
docker-machine-Linux-x86_64-0.16.1 nginx.tar
game2048.tar rhel7.tar
[root@server1 ~]# mv docker-machine-Linux-x86_64-0.16.1 /usr/local/bin/docker-machine
[root@server1 ~]# chmod +x /usr/local/bin/docker-machine #给予执行权限
[root@server1 ~]# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
[root@server1 ~]#
2.2创建machine
- machine指的是docker daemon主机,其实就是在host上安装和部署docker。
创建machine要求免密登陆远程主机: - ssh-keygen
- ssh-copy-id 目标ip
- 创建主机:(离线安装需要在目标主机提前安装好docker软件包)
- docker-machine create --driver generic --generic-ip-address=172.25.0.12 server2
2.2.1做免密
[root@server1 ~]# ssh-keygen
[root@server1 ~]# ssh-copy-id 172.25.15.2
[root@server1 ~]# ssh-copy-id 172.25.15.3
2.2.2编写脚本
[root@foundation15 ~]# wget https://get.docker.com/
--2021-07-23 16:16:08-- https://get.docker.com/
Resolving get.docker.com (get.docker.com)... 2600:9000:2135:a000:10:a463:3d00:93a1, 2600:9000:2135:ee00:10:a463:3d00:93a1, 2600:9000:2135:c00:10:a463:3d00:93a1, ...
Connecting to get.docker.com (get.docker.com)|2600:9000:2135:a000:10:a463:3d00:93a1|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14750 (14K) [text/plain]
Saving to: ‘index.html’
index.html 100%[===================>] 14.40K --.-KB/s in 0s
2021-07-23 16:16:10 (313 MB/s) - ‘index.html’ saved [14750/14750]
[root@foundation15 ~]# ls
3.0.115 Pictures rht-ks-post.log zabbix.api
daemon.json 'rhel6 lanmp.pdf' rht-ks-pre.log
index.html rhel-server-7.6-x86_64-dvd.iso root@172.25.15.1
[root@foundation15 ~]# vim index.html #修改431行
431 yum_repo="ftp://172.25.15.250/pub/docs/docker/docker-ce" #配置docker源
[root@foundation15 ~]# mv index.html get-docker.sh
三、创建主机:(离线安装需要在目标主机提前安装好docker软件包)
1.server2
[root@server1 ~]# docker-machine create --driver generic --engine-install-url "http://172.25.254.15/get-docker.sh" --generic-ip-address=172.25.15.2 server2
2.server3
[root@server3 ~]# yum install -y docker-ce
[root@server1 ~]# docker-machine create --driver generic --engine-install-url "http://172.25.254.15/get-docker.sh" --generic-ip-address=172.25.15.3 server3
3.查看主机
[root@server1 ~]# docker-machine ls
[root@server1 ~]# docker-machine status server2 #查看server2的状态
Running
[root@server1 ~]# docker-machine status server3
Running
[root@server1 ~]#
4.创建流程:
1.ssh免密登陆远程主机
2.安装docker软件包
3.复制证书
4.配置docker daemon
5.启动docker
5.docker主机上生成的配置文件
[root@server2 ~]# cat /etc/systemd/system/docker.service.d/10-machine.conf
[root@server3 ~]# cat /etc/systemd/system/docker.service.d/10-machine.conf
从上述配置文件中可以看出,docker daemon启用了TLS验证功能,docker-machine已经为其生成好了所需的证书文件。
6.管理machine:
连接远程docker主机时需要执行以下命令,但不方便:
- docker
docker-machine config server2
ps - docker-machine env server2 显示访问server2所需的环境变量:
[root@server1 ~]# docker-machine env server2
[root@server1 ~]# docker-machine env server3
[root@server1 ~]# eval $(docker-machine env server2)
根据提示执行:eval $(docker-machine env server2),可以直接切入目标主机