GVKun编程网logo

如何远程连接到docker swarm?(如何远程连接到另一台电脑)

26

此处将为大家介绍关于如何远程连接到dockerswarm?的详细内容,并且为您解答有关如何远程连接到另一台电脑的相关问题,此外,我们还将为您介绍关于29.dockerswarm创建三个节点swarm的

此处将为大家介绍关于如何远程连接到docker swarm?的详细内容,并且为您解答有关如何远程连接到另一台电脑的相关问题,此外,我们还将为您介绍关于29. docker swarm 创建 三个节点 swarm 的集群、Docker Compose比Docker Swarm和Docker Stack有什么好处?、Docker Swarm Mode 学习笔记(创建 Swarm 集群)、docker Swarm 中如何在docker-compose使用变量的有用信息。

本文目录一览:

如何远程连接到docker swarm?(如何远程连接到另一台电脑)

如何远程连接到docker swarm?(如何远程连接到另一台电脑)

是否可以从本地Mac在托管在云中的Docker集群上执行命令?如果是,怎么办?

我想在本地从docker swarm上执行以下命令:

docker create secret my-secret <address to local file>docker service create --name x --secrets my-secret image

答案1

小编典典

问题的答案可以在这里找到。

对于ubuntu机器需要做的是在路径中定义daemon.json文件,/etc/docker其内容如下:

  {    "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]  }

上面的配置不安全,如果服务器是公共托管的,则不应使用。

对于安全连接,请使用以下配置:

{  "tls": true,  "tlscert": "/var/docker/server.pem",  "tlskey": "/var/docker/serverkey.pem",  "hosts": ["tcp://x.x.x.y:2376", "unix:///var/run/docker.sock"]}

如@BMitch所述,可以在此处找到生成证书的详细信息。

29. docker swarm 创建 三个节点 swarm 的集群

29. docker swarm 创建 三个节点 swarm 的集群

1.使用 vagrant 部署 三台 centos/7 的 环境

###Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.0"

boxes = [

    {

            :name=>"docker-host",

            :eth1=>"192.168.205.10",

            :mem=>"1024",

            :cpu=>"1",

            :port=>"8888"

    },

    {

            :name=>"docker-node1",

            :eth1=>"192.168.205.11",

            :mem=>"1024",

            :cpu=>"1",

            :port=>"8889"

    },

    {

            :name=>"docker-node2",

            :eth1=>"192.168.205.12",

            :mem=>"1024",

            :cpu=>"1",

            :port=>"8890"

    }

]

Vagrant.configure(2) do |config|

config.vm.box = "centos/7"

boxes.each do |opts|

config.vm.define opts[:name] do |config|

config.vm.hostname = opts[:name]

config.vm.network "forwarded_port", guest: 80, host: opts[:port]

config.vm.provider "vmware_fusion" do |v|

v.vmx["memsize"] = opts[:mem]

v.vmx["numvcpus"] = opts[:cpu]

end

config.vm.provider "virtualbox" do |v|

v.customize ["modifyvm", :id, "--memory", opts[:mem]]

v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]

end

config.vm.network :private_network, ip: opts[:eth1]

end

end

config.vm.synced_folder "./labs", "/home/vagrant/labs"

config.vm.provision "shell", privileged: true, path: "./setup.sh"

end

 

2.编写 setup.sh

 

###setup.sh

 

#/bin/sh

# install some tools

sudo yum install -y wget

sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

sudo yum makecache

sudo yum -y update

sudo yum install -y git vim gcc glibc-static telnet bridge-utils

# install docker

curl -fsSL get.docker.com -o get-docker.sh

sh get-docker.sh

# start docker service

sudo groupadd docker

sudo usermod -aG docker vagrant

sudo systemctl start docker

rm -rf get-docker.sh

sudo tee /etc/docker/daemon.json <<-''EOF''

{

"registry-mirrors": ["https://v2ltjwbg.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

docker version

 

3.创建labs 文件夹 并启动容器

  mkdir  lables

  vagrant up

4. 进去 host 节点

  vagrant ssh docker-host

  声明 manager 节点

  docker swarm init --advertise-addr=192.168.205.10

  只需要 在其他节点运行这段代码 即可 进入这个节点

5. 进入node1节点 并 加入 swarm 集群

  进入docker-node1 节点

    vagrant ssh docker-node1

  运行刚刚生成的代码即可加入 swarm 集群

    docker swarm join --token SWMTKN-1-29cjw98xafo5454juq28ldear34aafbp1n616wilrnjl0q92jz-dt02qoe4nhe98mf6jon9rukca 192.168.205.10:2377

  在 host 节点查看集群节点情况

    docker-host 下

    docker node ls

  docker-node2 节点同理

 

6. 在 docker-machine 上进行 swarm 安装

  docker-machine create swarm-manager

  docker-machine create swarm-node1

  docker-machine create swarm-node2

  同理 加入

7. 在 labs.play-with-docker.com

  常见三个虚拟主机即可运行上面的命令即可

Docker Compose比Docker Swarm和Docker Stack有什么好处?

Docker Compose比Docker Swarm和Docker Stack有什么好处?

从我读到的内容来看,似乎Docker-Compose是一个在单个主机上创建多个容器的工具,而Docker Swarm是一个可以完全相同但具有更多控制权的工具,并且在Docker Stack的帮助下可以在多个主机上完成.我浏览了教程,也遇到了这个帖子:

docker-compose.yml vs docker-stack.yml what difference?

而且我得出的结论是,当你可以将Docker Swarm与Docker Stack一起使用时,没有理由使用Docker-Compose.他们甚至可以使用相同的docker-compose.yml.

似乎Docker-compose出现在swarm和堆栈之前,并且可能是swarm堆栈的新解决方案使得compose过时,但它仍然是遗留原因.这个想法是否正确?如果没有,在构建开发或生产环境方面,Docker-Compose对Docker Swarm和Docker Stack有什么好处?

最佳答案

It seems that Docker-compose came before the swarm and stack and maybe the new solution of swarm + stack makes compose obsolete,but it still remains for legacy reasons. Is this thinking correct?

简而言之,是的. Compose在所有Swarm之前出现(它起源于名为fig的第三方实用程序).更糟糕的是,甚至还有两个不同的Swarms,旧的Swarm(一个是单独的工具)和Swarm模式(这些日子内置于docker二进制文件中).

它似乎正在演变为内置于Docker中的服务和部署概念.但我猜想Docker Compose和Swarm Mode部署的东西会并存一段时间.

知道Docker Compose基础是一个名为libcompose(https://github.com/docker/libcompose)的库是有益的,其他第三方实用程序使用它来支持用于部署的docker-compose.yml文件格式(参见Rancher和rancher-compose作为示例) .我想他们会努力继续支持libcompose.

我不清楚Docker Swarm部署的东西是否实际上使用了libcompose.在我粗略的搜索中,Swarm模式似乎没有实现libcompose并且做了自己的事情.我不确定这与Docker Compose和libcompose的未来有何关系.你认为合适的解释……

Docker Swarm Mode 学习笔记(创建 Swarm 集群)

Docker Swarm Mode 学习笔记(创建 Swarm 集群)

Swarm 集群由管理节点与工作节点组成。

初始化集群

使用命令:docker swarm init

如果你的 Docker 主机有多个网卡, 拥有多个 IP 地址, 必须使用 --advertise-addr 来指定 IP ,例如:

docker swarm init --addvertise-addr xxx.xxx.xxx.xxx

我们在 Docker 主机上执行了此命令之后, 即会初始化 Swarm 集群, 也会讲此 Docker 主机初始化为一个 Manager 节点。

Swarm初始化

增加工作节点

在初始化 Swarm 集群之后, 我们也拥有了一个管理节点。如上图所示,添加工作节点可以在其他 Docker 主机上执行:

docker swarm join --token SWMTKN-1-3b10lvrdqihuiuig8sabov8hvq3m64sk2hqt07fnww15wsptlt-diw13ezqycdaeznmmmy0ldl0y 192.168.65.3:2377 (这里的 join-token 与IP地址视实际情况而定)

增加工作节点

docker swarm join-token manager

例如,如果想增加一个工作节点加入到上面初始化的 Swarm 集群中,执行下面的命令:

docker swarm join-token manager

Swarm集群增加管理节点

这样我们就能查看到 Swarm 集群管理节点的 join-token,接着执行

docker swarm join --token SWMTKN-1-3b10lvrdqihuiuig8sabov8hvq3m64sk2hqt07fnww15wsptlt-1w7qtjbkp62svewsceyhii8cy 192.168.65.3:2377 (这里的 join-token 与IP地址视实际情况而定)

查看集群

docker node ls

查看集群节点

注意上面有一项为 Manager Status ,即管理节点状态。这里一个集群只会有一个 leader , 可以有多个 Manager , 多个 Worker 。

docker Swarm 中如何在docker-compose使用变量

docker Swarm 中如何在docker-compose使用变量

先看一个docker-comose的yml文件

version: "3.2"
services:
  docker-test:
    hostname: docker-test
    image: ''${DOCKER_REGISTRY_URL}/dockerteam/docker-test:1.0''
    ports:
      - "9118"
    env_file: .env
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.role== worker]
      resources:
        limits:
#          cpus: ''1''
          memory: 1GB
        reservations:
#          cpus: ''0.2''
          memory: 512M

如上文件中,env_file在docker-comose 命令里是支持的,只需要提供对应的.env文件,在.env文件中设置${DOCKER_REGISTRY_URL}变量即可。

但是如果线上在docker swarm 集群环境中docker-comose使用env_file是无效的,那这时候怎么办?这时候不能再去使用.env文件了,我尝试了一下把变量加入到宿主机的环境变量里:

 export DOCKER_REGISTRY_URL=docker.sifu.cn:12135

再次运行docker stack命令,服务部署成功。

注意:上述的加入环境变量我只是做测试之用,如果真实情况,请在/etc/profile文件里添加对应的环境变量

我们今天的关于如何远程连接到docker swarm?如何远程连接到另一台电脑的分享已经告一段落,感谢您的关注,如果您想了解更多关于29. docker swarm 创建 三个节点 swarm 的集群、Docker Compose比Docker Swarm和Docker Stack有什么好处?、Docker Swarm Mode 学习笔记(创建 Swarm 集群)、docker Swarm 中如何在docker-compose使用变量的相关信息,请在本站查询。

本文标签: