2025年3月31日 星期一 乙巳(蛇)年 正月初一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 云技术 > Docker

Docker容器学习与分享12

时间:12-20来源:作者:点击数:60
Docker多主机管理

之前在一台Centos7上安装了Docker,如果是在多台主机上都安装Docker,用手动安装的方法不光效率低下,而且有可能出错,所以可以使用Docker Machine进行多台主机的Docker安装和管理。

具体安装过程可以参照官方文档https://docs.docker.com/machine/install-machine/.

首先准备两台Centos7的虚拟机(一台IP为192.168.41.133,安装Docker Machine,另一台IP为192.168.41.135),在其中一台机器上安装Docker,安装过程可以参照分享01.

然后下载Docker Machine二进制文件并将其解压缩到PATH。

  • [root@promote ~]# base=https://github.com/docker/machine/releases/download/v0.14.0 &&
  • > curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  • > sudo install /tmp/docker-machine /usr/local/bin/docker-machine
  • % Total % Received % Xferd Average Speed Time Time Time Current
  • Dload Upload Total Spent Left Speed
  • 100 617 0 617 0 0 583 0 --:--:-- 0:00:01 --:--:-- 584
  • 100 26.7M 100 26.7M 0 0 1730k 0 0:00:15 0:00:15 --:--:-- 3488k

接着通过显示机器版本来检查安装:

  • [root@promote ~]# docker-machine version
  • docker-machine version 0.14.0, build 89b8332

为了更好的体验接着安装bash完成脚本,将脚本保存到/etc/bash_completion.d/usr/local/etc/bash_completion.d

  • [root@promote ~]# cd /etc/bash_completion.d
  • [root@promote bash_completion.d]# base=https://raw.githubusercontent.com/docker/machine/v0.14.0
  • [root@promote bash_completion.d]# for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine. bash
  • > do
  • > sudo wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
  • > done
  • --2018-07-11 01:47:47-- https://raw.githubusercontent.com/docker/machine/v0.14.0/contrib/completion/bash/docker- machine-prompt.bash
  • Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.40.133
  • Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.40.133|:443... connected.
  • HTTP request sent, awaiting response... 200 OK
  • Length: 1469 (1.4K) [text/plain]
  • Saving to: ‘/etc/bash_completion.d/docker-machine-prompt.bash’
  • 100%[=======================================================================>] 1,469 --.-K/s in 0s
  • 2018-07-11 01:47:48 (192 MB/s) - ‘/etc/bash_completion.d/docker-machine-prompt.bash’ saved [1469/1469]
  • --2018-07-11 01:47:48-- https://raw.githubusercontent.com/docker/machine/v0.14.0/contrib/completion/bash/docker- machine-wrapper.bash
  • Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.40.133
  • Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.40.133|:443... connected.
  • HTTP request sent, awaiting response... 200 OK
  • Length: 1525 (1.5K) [text/plain]
  • Saving to: ‘/etc/bash_completion.d/docker-machine-wrapper.bash’
  • 100%[=======================================================================>] 1,525 --.-K/s in 0s
  • 2018-07-11 01:47:50 (160 MB/s) - ‘/etc/bash_completion.d/docker-machine-wrapper.bash’ saved [1525/1525]
  • --2018-07-11 01:47:50-- https://raw.githubusercontent.com/docker/machine/v0.14.0/contrib/completion/bash/docker- machine.bash
  • Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.40.133
  • Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.40.133|:443... connected.
  • HTTP request sent, awaiting response... 200 OK
  • Length: 12205 (12K) [text/plain]
  • Saving to: ‘/etc/bash_completion.d/docker-machine.bash’
  • 100%[=======================================================================>] 12,205 --.-K/s in 0.02s
  • 2018-07-11 01:47:51 (489 KB/s) - ‘/etc/bash_completion.d/docker-machine.bash’ saved [12205/12205]

这样就下载好了脚本。

接着申明环境变量。

  • [root@promote bash_completion.d]# source /etc/bash_completion.d/docker-machine-prompt.bash

可以先使用docker-machine ls查看一下当前的machine.

  • [root@promote ~]# docker-machine ls
  • NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS

因为还没有安装Docker所以使用这条命令什么都没有。

接着创建第一台机器,就是另外一台Centos虚拟机(IP:192.168.41.155).

1.首先需要让这两台Centos可以SSH免密登陆。

  • [root@promote ~]# ssh-keygen
  • Generating public/private rsa key pair.
  • Enter file in which to save the key (/root/.ssh/id_rsa):
  • Created directory '/root/.ssh'.
  • Enter passphrase (empty for no passphrase):
  • Enter same passphrase again:
  • Your identification has been saved in /root/.ssh/id_rsa.
  • Your public key has been saved in /root/.ssh/id_rsa.pub.
  • The key fingerprint is:
  • SHA256:T6qcnNvYwepsMhGfdvG/Gk+BtzVe2eCLiF0aMAI6wqc root@promote.cache-dns.local
  • The key's randomart image is:
  • +---[RSA 2048]----+
  • | . |
  • |. . . |
  • |..o. . o . |
  • | .o.. ..o . . .o|
  • | E o .So+ + +.o|
  • | . +..*.* * + |
  • | o .= *.+ o |
  • | o+.O . +. |
  • | =%.o ..o. |
  • +----[SHA256]-----+
  • [root@promote ~]# ssh-copy-id 192.168.41.135
  • /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
  • The authenticity of host '192.168.41.135 (192.168.41.135)' can't be established.
  • ECDSA key fingerprint is SHA256:JqAC8jcLCLobvRy0wzY9VGBNuZU3EydpO8n2fEtQ178.
  • ECDSA key fingerprint is MD5:5d:26:a1:60:c3:eb:02:e9:97:7a:bb:7a:49:8a:14:0b.
  • Are you sure you want to continue connecting (yes/no)? yes
  • /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
  • /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
  • root@192.168.41.135's password:
  • Number of key(s) added: 1
  • Now try logging into the machine, with: "ssh '192.168.41.135'"
  • and check to make sure that only the key(s) you wanted were added.

2.创建第一个机器

使用docker-machine create命令,因为是Linux,所以driver就用generic,目标地址选项用--generic-ip-address

  • [root@promote ~]# docker-machine create --driver generic --generic-ip-address=192.168.41.135 machine1
  • Creating CA: /root/.docker/machine/certs/ca.pem
  • Creating client certificate: /root/.docker/machine/certs/cert.pem
  • Running pre-create checks...
  • Creating machine...
  • (machine1) No SSH key specified. Assuming an existing key at the default location.
  • 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 centos...
  • 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 machine1

现在到192.168.41.135上去验证。

  • [root@promote ~]# docker version
  • Client:
  • Version: 18.05.0-ce
  • API version: 1.37
  • Go version: go1.9.5
  • Git commit: f150324
  • Built: Wed May 9 22:14:54 2018
  • OS/Arch: linux/amd64
  • Experimental: false
  • Orchestrator: swarm
  • Server:
  • Engine:
  • Version: 18.05.0-ce
  • API version: 1.37 (minimum version 1.12)
  • Go version: go1.9.5
  • Git commit: f150324
  • Built: Wed May 9 22:18:36 2018
  • OS/Arch: linux/amd64
  • Experimental: false

也可以在192.168.41.133上验证。

  • [root@promote ~]# docker-machine ls
  • NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
  • machine1 - generic Running tcp://192.168.41.135:2376 v18.05.0-ce

发现安装完成。

接着我通过192.168.41.133这台主机来使用192.168.41.135主机上的Docker,首先查看访问machine所需要的环境变量。

  • [root@promote ~]# docker-machine env machine1
  • export DOCKER_TLS_VERIFY="1"
  • export DOCKER_HOST="tcp://192.168.41.135:2376"
  • export DOCKER_CERT_PATH="/root/.docker/machine/machines/machine1"
  • export DOCKER_MACHINE_NAME="machine1"
  • # Run this command to configure your shell:
  • # eval $(docker-machine env machine1)

可以看到倒数第二行:运行此命令来配置你的shell

也就是指运行eval $(docker-machine env machine1)命令配置上面的环境变量进入machine1.

运行之后发现并无变化,是因为一开始我们没有配置shell提示.

接着启用docker-machineshell提示,添加$(__docker_machine_ps1)到您的PS1设置中~/.bashrc

  • [root@promote ~]# PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
  • [root@promote ~ [machine1]]#

这时发现shell变了,在当前状态下的所有docker操作都是运行在machine1上的,即192.168.41.135主机上。

如果要切回回来的环境使用unset命令,取消环境变量即可:

  • [root@promote ~ [machine1]]# unset export DOCKER_TLS_VERIFY
  • [root@promote ~ [machine1]]# unset DOCKER_HOST
  • [root@promote ~ [machine1]]# unset DOCKER_CERT_PATH
  • [root@promote ~ [machine1]]# unset DOCKER_MACHINE_NAME
  • [root@promote ~]#

发现变回来了。

docker-machine的其他用法可以使用docker-machine --help命令来查看。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门