容器集群的入门
docker machine是docker官方编排(orchestration)项目之一,负责在多种平台上快速安装docker环境。
docker machine支持在常规linux操作系统、虚拟化平台、openstack、公有云等不同环境下安装配置docker host.
docker machine 项目基于go语言实现,目前在github上的维护地址:
openstack偏向python,docker compose是用来做编排的,可以控制多容器。
server1
cd /usr/local/bin/
ls
mv docker-machine-Linux-x86_64-0.16.2 docker-machine
chmod +x docker-machine
本机上
iptables -t nat -I POSTROUTING -s 172.25.0.0/24 -j MASQUERADE
virsh start vm3
virt-manager
server3
hostnamectl set-hostname server3
vim /etc/sysconfig/network-scripts/ifcfg-eth0
systemctl restart network
ps ax
netstat -antlp
驱动使用的是通用性。
虚拟化的连接驱动。
作为管理端,需要创建免密
server1
ssh-keygen
ssh-copy-id server3 #对server3做一次免密
ssh server3 没有任何的秘钥
docker-machine create --driver generic --generic-ip-address=172.25.0.3 server3
server3
netstat antlp
cd /etc/yum.repos.d/
ls
cat /var/log/messages
server1
宿主机上重新开一个apache
cd /content/ 目录上
ls
ll -d /var/www/html/
在默认发布目录中放一个脚本。
mv get-docker.sh /opt/
wget https://get.docker.com/
ll
vim index.html
mv index.html get-docker.sh
一下行数大概在456
vim get-docker.sh
server1
docker-machine create --driver generic --engine-install-url "http://172.25.0.250/get-docker.sh" --generic-ip-address=172.25.0.3 server3
docker-machine ls
如果server3已经存在了
docker rm server3
docker-machine create --driver generic --engine-install-url "http://172.25.0.250/get-docker.sh" --generic-ip-address=172.25.0.3 server3
server3 这台机器必须会联网
cd /etc/yum.repos.d/
ls
生成官方的yum园
yum repolist
脚本中自动创建的yum源可能有问题
rm -f docker-ce.repo
yum clean all
server2
cd /etc/yum.repos.d/
ls #除了有官方的,还有依赖性。
yum repolist
rpm -q docker-ce
宿主机
cd /var/ftp/pub/docs/
cd docker/
ls
cd 20/
ls
createrepo . #这个命令是专门用来创建yum源的,尤其是自己落的第三方yum源,.表示将当前目录检索为yum源,相当于检索当前的rpm包生成索引信息。
ls
cd repodata/
cd ..
ls
将其中需要用到的包手工下载下来。
server1
vim /etc/yum.conf
怎么要知道下载哪些包
server2
scp Centos-7.repo docker-ce.repo server3:/etc/yum.repos.d/
正常情况下是不必拷的,这个只是为了说明包是怎么确定的。
server3
yum install docker-ce
n
keepcache是在安装的时候把缓存保持下来不删。
这样的话包就有了,在本地做个yum源,然后通过apache发布出来。
宿主机
cd /content/
ls
vim docker-ce.repo 这些都是阿里云做的yum源
cat Centos-7.repo
server3
vim Centos-7.repo
cat docker-ce.repo
ls
vim get-docker.sh 修改脚本
server3
rm -f Centos-7.repo docker-ce.repo
server1
vim /etc/yum.conf
docker-machine rm server3
docker-machine create --driver generic --engine-install-url "http://172.25.0.250/get-docker.sh" --generic-ip-address=172.25.0.3 server3
server3
ps ax
ls
cat docker-ce.repo
ls
rm -f Centos-7.repo
ls
server1
docker-machine ls
server3
docker info
到此docker引擎都运行了,但是内核的参数需要自己改。还会有报错,是警告。会对网络有影响,其他的没什么
netstat -antlp
会开启一个2376的端口,用于远程连接。
server1
cd /etc/sysctl.d/
ls
scp docker.conf server3:/etc/sysctl.d/
server3
sysctl --system
ps ax
再演示一遍,如果已经装过了的,会直接跳过。
宿主机
virsh start vm4
这个机子和server3同样操作
server1
cd /etc/sysctl.d/
ls
scp docker.conf server3:/etc/sysctl.d/
docker-machine create --driver generic --engine-install-url "http://172.25.0.250/get-docker.sh" --generic-ip-address=172.25.0.2 server2
在内网中建一个自己的yum源
之前指定的文件,依然连接的是阿里云的。
宿主机上
cd /content/
ls
vim docker-ce.repo
server1
cd /etc/sysctl.d/
ssy-keygen
ssy-copy-id server4
docker-machine create --driver generic --engine-install-url "http://172.25.0.250/get-docker.sh" --generic-ip-address=172.25.0.4 server4
server4
cd /etc/yum.repolist.d/
ls
cat docker-ce.repo
建立一个内网的源,并通过apache发布出来了。
添加的时候是通过脚本来完成的。
server1
docker-machine ls #会把后端的机器连接开启一个远程连接端口。
docker-machine env server2
eval $(docker-machine env server2)#虽然是在server1上,但是这个时候就在server2上了
docker ps #用docker敲命令的时候实际上敲的是远程
docker images
rpm -qa|grep bash
注销之后,重新登进来
cd .docker/machine/
ls
cd certs/
ls
server2
systemctl status docker
cd /etc/systemd/system/docker.service.d/
ls
cat 10-machine.conf
cd /etc/docker/
ls
以下操作是为了显示当前在哪个节点
server1
下载这些脚本之后退出重新登录
cd /etc/bash_completion.d/
ls
cd
vim ~/.bashrc
加入上述那一行代码
source .bashrc
cd
docker-machine env server2
eval $(docker-machine env server2)
回到server1,则退出重新登陆
docker-machine config server3#查看配置信息
docker-machine scp 复制machine中的文件
docker-machine ssh 连接machine
docker-machine rm 删除machine