Docker(九)--Docker三剑客--Docker Machine

1. Docker Machine简介

- 	Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。
	Docker Machine支持在常规Linux操作系统、虚拟化平台、openstack、公有云等不同环境下安装配置docker host。
	Docker Machine 项目基于 Go 语言实现,目前在 Github 上的维护地址: https://github.com/docker/machine/

2.Docker Machine实践(受控机器已经安装了docker-ce)

2.1 Docker Machine安装:

- 在线安装
	# curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine 
	# chmod +x /tmp/docker-machine
	# cp /tmp/docker-machine /usr/local/bin/docker-machine
	
	# docker-machine version
	   docker-machine version 0.16.1, build cce350d7
 
- 本实验采用下载好的Docker Machine

 

[root@server1 ~]# ll docker-machine-Linux-x86_64-0.16.1 
-rwxr-xr-x 1 root root 28201440 Jan 28 14:04 docker-machine-Linux-x86_64-0.16.1
[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

Docker(九)--Docker三剑客--Docker Machine 

2.2 创建machine 

 

- 创建流程:
	ssh免密登陆远程主机
	安装docker软件包
	复制证书
	配置docker daemon
	启动docker
		
- 创建machine:
	machine指的是docker daemon主机,其实就是在host上安装和部署docker。
- 创建machine要求免密登陆远程主机:
	# ssh-keygen
	# ssh-copy-id  目标ip
- 创建主机:(离线安装需要在目标主机提前安装好docker软件包)
	# docker-machine create --driver generic --generic-ip-address=172.25.70.2 server2
[root@server1 ~]# ssh-keygen
[root@server1 ~]# ssh-copy-id server2
[root@server1 ~]# docker-machine create --driver generic --generic-ip-address=172.25.17.2 server2     ##创建
[root@server1 ~]# docker-machine rm server2  ##删除

 Docker(九)--Docker三剑客--Docker Machine

Docker(九)--Docker三剑客--Docker Machine 

查看docker主机上生成的配置文件 

 

[root@server2 ~]# cd /etc/systemd/system/docker.service.d
[root@server2 docker.service.d]# ls
10-machine.conf
[root@server2 docker.service.d]# cat 10-machine.conf
 
[root@server1 server2]# docker-machine config server2

 Docker(九)--Docker三剑客--Docker Machine

 Docker(九)--Docker三剑客--Docker Machine

2.3 远程控制 

machine:
	连接远程docker主机时需要执行以下命令,但不方便:
	# docker `docker-machine  config server12` ps
	# docker-machine env server2 显示访问server2所需的环境变量:
	根据提示执行:eval $(docker-machine env server2),可以直接切入目标主机。但是操作不是很明显,会让人误以为是server1。

 Docker(九)--Docker三剑客--Docker Machine

 Docker(九)--Docker三剑客--Docker Machine

 Docker(九)--Docker三剑客--Docker Machine

 Docker(九)--Docker三剑客--Docker Machine

2.4 人性化的显示 

 

- 安装bash脚本,使得行提示符更加的人性化:
	# base=https://raw.githubusercontent.com/docker/machine/v0.16.1
	# for i in docker-machine-prompt.bash docker-machine-wrapper.bash    docker-machine.bash
	      do
	      wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
	      done
	# vim ~/.bashrc
	      PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
[root@server1 ~]# yum list bash-* 
bash.x86_64   
bash-completion.noarch     ##一定要装       
bash-doc.x86_64    
 
[root@server1 bash_completion.d]#  pwd
/etc/bash_completion.d
[root@server1 bash_completion.d]# ll *.bash
-rwxr-xr-x 1 root root 12211 Jan 28 14:18 docker-machine.bash
-rwxr-xr-x 1 root root  1469 Jan 28 14:18 docker-machine-prompt.bash
-rwxr-xr-x 1 root root  1525 Jan 28 14:18 docker-machine-wrapper.bash
 
 
[root@server1 ~]# vim ~/.bashrc 
[root@server1 ~]# cat ~/.bashrc | grep PS1
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
 
[root@server1 ~]# eval $(docker-machine env server2)
[root@server1 ~ [server2]]# docker images 

 Docker(九)--Docker三剑客--Docker Machine

3. Docker Machine实践(受控机器没有安装了docker-ce) 

 3.1 配置本地源

 

[root@westos html]# vim docker-ce.repo
[root@westos html]# cat docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=0
 
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/extras/$basearch/
gpgcheck=0
 

 

 

Docker(九)--Docker三剑客--Docker Machine 

3.2 配置免密 

 

[root@server1 ~]# ssh-copy-id server3

 Docker(九)--Docker三剑客--Docker Machine

3.3 下载并配置脚本 

[root@server1 html]# curl https://get.docker.com -o  get-docker.sh  ##下载脚本,并修改脚本为本地yum源
[root@server1 html]# vim get-docker.sh 
修改如下(行数):
412 yum_repo="http://172.25.26.250/docker-ce.repo"
471 fi
472 # install the correct cli version first
473 #if [ -n "$cli_pkg_version" ]; then
474 #       $sh_c "$pkg_manager install -y -q docker-ce-cl    i-$cli_pkg_version"
475 #fi
 
 
[root@server1 ~]# scp get-docker.sh root@172.25.26.250:/var/www/html  ##发送到真机默认发布目录

 Docker(九)--Docker三剑客--Docker MachineDocker(九)--Docker三剑客--Docker Machine

 3.4 安装

 

[root@server1 ~]# docker-machine create --driver generic --engine-install-url "http://172.25.26.250/get-docker.sh" --generic-ip-address 172.25.26.3 server3   ##使用基础的引擎generic
 

Docker(九)--Docker三剑客--Docker Machine  

Docker(九)--Docker三剑客--Docker Machine 

3.5 测试 

 

[root@server1 ~]# docker-machine ls  

 Docker(九)--Docker三剑客--Docker Machine

4. docker-machine 子命令 

 

docker-machine upgrade  server2	更新docker版本
docker-machine config  server2	查看machine配置
docker-machine scp 			可以在machine中复制文件
docker-machine ssh			连接machine
docker-machine rm			删除machine

 5. yum 小知识补充

 

[root@server3 ~]# yum install nfs-utils.x86_64
## 安装时选择d,是下载rpm包到本地
[root@server3 ~]# cd /var/cache/yum/x86_64/7Server/
[root@server3 7Server]# ls
docker  rhel7.6  timedhosts
[root@server3 packages]# pwd  ##到对应的源的packages里面,rpm包在此处
/var/cache/yum/x86_64/7Server/rhel7.6/packages
上一篇:百度apollo自动驾驶环境搭建


下一篇:Mac安装M1芯片版本miniconda流程