mac swarm学习过程 发布日期:2020-03-31 13:54:32     博主推荐★

一、安装docker


services-diagram.png

1、卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine


2、安装 Docker Engine-Community

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2


3、使用以下命令来设置稳定的仓库

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo


4、安装 Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

$ sudo yum install docker-ce docker-ce-cli containerd.io

如果提示您接受 GPG 密钥,请选是。


5、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序

$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable


6、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符(-)。例如:docker-ce-18.09.1

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

错误信息:

 You could try using --skip-broken to work around the problem

 You could try running: rpm -Va --nofiles --nodigest

按照提示

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io --skip-broken


然后直接执行第8步  docker -v


7、启动 Docker

$ sudo systemctl start docker


8、看看启动是否成功(有版本号显示就成功了)

$ sudo docker -v



二、安装Docker Machine


machine.png


安装 Docker Machine 之前你需要先安装 Docker。

Docker Mechine 可以在多种平台上安装使用,包括 Linux 、MacOS 以及 windows。

1.1、Linux 安装命令(目录/usr/local/bin)

$ base=https://github.com/docker/machine/releases/download/v0.16.2 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

下载不了,我这里有一份64位的centos的  链接:https://pan.baidu.com/s/1Odvzw68352b16JB2hEwqAA  密码:kp17  


1.2、macOS 安装命令

$ base=https://github.com/docker/machine/releases/download/v0.16.2 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine


2、查看是否安装成功

$ docker-machine version
docker-machine version 0.16.0, build 9371605


3、列出可用的机器

可以看到目前只有这里默认的 default 虚拟机。

$ docker-machine ls


4、创建机器

创建一台名为 test 的机器。【ps:通过 virtualbox 来介绍 docker-machine 的使用方法。其他云服务商操作与此基本一致。具体可以参考每家服务商的指导文档。】

$ docker-machine create --driver virtualbox test

注:--driver:指定用来创建机器的驱动类型,这里是 virtualbox。


报错信息(001):

Creating CA: /root/.docker/machine/certs/ca.pem
Creating client certificate: /root/.docker/machine/certs/cert.pem
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
Creating CA: /root/.docker/machine/certs/ca.pem
Creating client certificate: /root/.docker/machine/certs/cert.pem
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"

Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"

执行以下命令:

vim /etc/yum.repos.d/virtualbox.repo

内容如下:

[virtualbox]
name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc

完事之后【完成在Centos中安装VirtualBox】:

yum install -y VirtualBox-6.0


报错信息(002):

Error with pre-create check: "We support Virtualbox starting with version 5. Your VirtualBox install is 
"WARNING: The vboxdrv kernel module is not loaded. Either there is no module
available for the current kernel (3.10.0-327.el7.x86_64) or it failed to
load. Please recompile the kernel module and install it by

sudo /sbin/vboxconfig

You will not be able to start VMs until this problem is fixed.

6.0.18r136238". Please upgrade at https://www.virtualbox.org"

遇到这个错误之后,按照提示执行

sudo /sbin/vboxconfig

得到的结果如下:

This system is currently not set up to build kernel modules.
Please install the gcc make perl packages from your distribution.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    kernel-devel kernel-devel-3.10.0-327.el7.x86_64

既然提示我们要执行

yum install -y kernel-devel

安装完了,执行创建虚拟主机的命令还是失败的话,那么就要考虑

$ uname -r

3.10.0-693.21.1.el7.x86_64

$ ll /usr/src/kernels/

3.10.0-957.21.3.el7.x86_64

传送门:https://blog.csdn.net/fly_leopard/article/details/93205412

处理完了之后,继续执行

sudo /sbin/vboxconfig

报错信息:依然和002相同呢?

yum -y install gcc gcc-c++ kernel-devel

执行完了,然后继续

sudo /sbin/vboxconfig

总算成功了


报错信息:

Running pre-create checks...
(api) Image cache directory does not exist, creating it at /root/.docker/machine/cache...
(api) No default Boot2Docker ISO found locally, downloading the latest release...
Error with pre-create check: "Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp 13.250.168.23:443: connect: connection refused"

处理办法:

$wget https://github.com/boot2docker/boot2docker/releases/download/v18.09.1/boot2docker.iso 

$mv ./boot2docker.iso /root/.docker/machine/cache

 

/root/.docker/machine/cache

5、基础命令

①、查看机器的 ip

$ docker-machine ip test

②、停止机器

$ docker-machine stop test

③、启动机器

$ docker-machine start test

④、进入机器

$ docker-machine ssh test

⑤、可用的机器列表

$ docker-machine ls

⑥、查看当前激活状态的 Docker 主机

$ docker-machine active

⑦、打印DockerHost

echo $DOCKER_HOST


6、命令解释

config:查看当前激活状态 Docker 主机的连接信息。

creat:创建 Docker 主机

env:显示连接到某个主机需要的环境变量

inspect: 以 json 格式输出指定Docker的详细信息

ip: 获取指定 Docker 主机的地址

kill: 直接杀死指定的 Docker 主机

ls: 列出所有的管理主机

provision: 重新配置指定主机

regenerate-certs: 为某个主机重新生成 TLS 信息

restart: 重启指定的主机

rm: 删除某台 Docker 主机,对应的虚拟机也会被删除

ssh: 通过 SSH 连接到主机上,执行命令

scp: 在 Docker 主机之间以及 Docker 主机和本地主机之间通过 scp 远程复制数据

mount: 使用 SSHFS 从计算机装载或卸载目录

start: 启动一个指定的 Docker 主机,如果对象是个虚拟机,该虚拟机将被启动

status: 获取指定 Docker 主机的状态(包括:Running、Paused、Saved、Stopped、Stopping、Starting、Error)等

stop: 停止一个指定的 Docker 主机

upgrade: 将一个指定主机的 Docker 版本更新为最新

url: 获取指定 Docker 主机的监听 URL

version: 显示 Docker Machine 的版本或者主机 Docker 版本

help: 显示帮助信息


三、Swarm 集群管理

如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。

   swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。

   work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)

以下示例,均以 Docker Machine 和 virtualbox 进行介绍,确保你的主机已安装 virtualbox。

1、创建 swarm 集群管理节点(manager)

创建 docker 机器:

$ docker-machine create -d virtualbox swarm-manager

初始化 swarm 集群,进行初始化的这台机器,就是集群的管理节点。

$ docker-machine ssh swarm-manager
$ docker swarm init --advertise-addr 192.168.99.101 #这里的 IP 为创建机器时分配的 ip。【docker-machine ps看到的swarm-manager的ip】

以下输出,说明成功了

docker@swarm-manager:~$ docker swarm init --advertise-addr 192.168.99.101
Swarm initialized: current node (2sj6o793xs36pp3wqxwoi2q88) is now a manager.
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-4y8nlohxywcozk677lq4yzj820xlswpg5pwrmq7623gbdyhb2e-azbphyet7totw2aiq0vkratl8 192.168.99.101:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

找不到了

docker swarm join-token worker

完整服务(端口,个数,名称,延时,镜像)

docker service create --replicas 1 --name redis --publish published=2379,target=2379 --update-delay 10s redis:3.0.7

完成服务

docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock visualizer

切换dns的模式

docker service update --endpoint-mode dnsrr viz

添加端口映射

docker service update --publish-add 8080:80 viz

伸缩

docker service scale web=6


博文地址:https://blog.ahamu.cn/blog/detail.html?id=328
   
推荐文章
  • 1
    phper转java记录篇-spring boot
    2020/06/10
  • 2
    thinkphp5.0使用路由之后,post请求的
    2020/05/19
  • 3
    springboot单元测试aop失效
    2020/05/15
  • 4
    脑海中的JVM
    2020/05/12
  • 5
    IDEA搜索插件时显示search results
    2020/05/12
  • 6
    spring boot 配置加载源码查找
    2020/04/20
  • 7
    通过javap命令分析java汇编指令
    2020/04/16
  • 8
    IDEA小知识:查看JVM内存使用情况的步骤
    2020/04/16
  • 9
    springboot-加载自定义的properti
    2020/04/14
  • 10
    Jenkins执行shell脚本无法启动子进程解决
    2020/04/03
  • 11
    mac idea激活找专业的
    2020/04/02
  • 12
    Jenkins + DockerSwarm 实现弹
    2020/03/31
  • 13
    mac swarm学习过程
    2020/03/31
  • 14
    spring cloud
    2020/03/18
  • 15
    JAVA开发中遇到的问题记录002
    2020/03/12
  • 16
    JAVA开发中遇到的问题记录001
    2020/03/07
  • 17
    php -i查看信息
    2020/02/23
  • 18
    phpStorm中使用xdebug工具调试dock
    2019/12/09
  • 19
    讲的比较好的B+树执行原理的文章
    2019/12/09
  • 20
    如何用Dockerfile构建镜像
    2019/12/09
最喜标签
NYOJ 面试 AJAX ping CentOS 灰度算法 YII2