docker三剑客之docker machine
链接: docker machine.
docker machine简介
- Docker Machine 是 Docker 官方编排(Orchestration)项目之一,
负责在多种平台上快速安装 Docker 环境。 - Docker Machine支持在常规Linux操作系统、
虚拟化平台、openstack、
公有云等不同环境下安装配置docker host。 - Docker Machine 项目基于 Go 语言实现,
目前在 Github 上的维护地址: https://github.com/docker/machine/
docker machine实践
安装
链接: 安装docker machine的github地址.
$ 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 &&
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
docker-machine version
[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@server2 ~]# rpm -q docker-ce
docker-ce-20.10.2-3.el7.x86_64
创建machine
- machine指的是docker daemon主机,其实就是在host上安装和部署docker。
- 创建machine要求免密登陆远程主机:
ssh-keygen
ssh-copy-id 目标ip - 创建主机:(离线安装需要在目标主机提前安装好docker软件包)
#docker-machine create --driver generic --generic-ip-address=172.25.10.2 server2 - 创建流程:
ssh免密登陆远程主机
安装docker软件包
复制证书
配置docker daemon
启动docker
远程控制创造的machine
[root@server1 ~]# ssh-keygen
[root@server1 ~]# ssh-copy-id server2
[root@server1 ~]# docker-machine create --driver generic --generic-ip-address 192.168.0.2 server2
[root@server1 ~]# rpm -qa | grep docker
[root@server1 ~]# docker-machine env server2 #显示访问server2所需的环境变量
[root@server2 ~]# netstat -antlp
tcp6 0 0 :::2376 :::* LISTEN 24924/dockerd
docker主机上生成的配置文件:如下 述配置文件中可以看出,docker daemon启用了TLS验证功能,docker-machine已经为其生成好了所需的证书文件。
连接远程docker主机时需要执行以下命令,但不方便:
docker `docker-machine config server2` ps
[root@server1 ~]# eval $(docker-machine env server2)#可以切入目标主机
[root@server1 ~]# docker run -d --name demo nginx
安装bash脚本,使得行提示符更加的人性化:
链接: bash下载地址.
[root@server1 ~]# cd /etc/bash_completion.d/
[root@server1 ~]# vim .bashrc
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
[root@server1 ~]# logout
Connection to 192.168.0.1 closed.
[kiosk@foundation50 Desktop]$ ssh root@192.168.0.1
[root@server1 ~]# docker-machine env server2
[root@server1 ~]# eval $(docker-machine env server2)
[root@server1 ~ [server2]]#
给没有安装docker-ce的主机,使用docker-machine进行安装
172.25.0.111主机(真机:作为安装源)
已经安装好httpd
mkdir /var/www/html/docker-ce
cd /var/www/html
wget https://get.docker.com 下载下来的文件就是用来安装docker-ce
[root@server1 ~]# vim get-docker.sh
412 474行
yum_repo="http://172.25.0.111/docker-ce.repo"
# install the correct cli version first
#if [ -n "$cli_pkg_version" ]; then
# $sh_c "$pkg_manager install -y -q docker-ce-cli-$cli_pkg_version"
#fi
$sh_c "$pkg_manager install -y -q docker-ce"
将rpm全部安装好之后,yum install createrepo -y
createrepo . 搭建yum仓库
在安装的时候有repodata目录才能读到
[root@server3 yum.repos.d]# yum install docker-ce docker-ce-cli
[root@server3 docker-ce]# cd /var/cache/yum/x86_64/7Server/extras/packages/
[root@server3 packages]# cp * /var/www/html/docker-ce/
[root@server3 docker-ce]# cd /var/cache/yum/x86_64/7Server/
[root@server3 7Server]# cd docker/
[root@server3 docker]# ls
[root@server3 packages]# cp * /var/www/html/docker-ce/
[root@server3 docker-ce]# yum install -y createrepo
[root@server3 docker-ce]# createrepo .
[root@server3 docker-ce]# ls
[root@server3 docker-ce]# systemctl start httpd
[root@server3 yum.repos.d]# vim docker-ce.repo
[docker]
name=docker-ce
baseurl=http://192.168.0.3/docker-ce
gpgcheck=0
[root@server3 yum.repos.d]# yum clean all
[root@server3 yum.repos.d]# yum repolist
[root@server3 yum.repos.d]# yum install docker-ce docker-ce-cli
ssh免密登陆远程主机
创建主机的时候直接安装docker-ce