此处将为大家介绍关于如何远程连接到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?(如何远程连接到另一台电脑)
- 29. docker swarm 创建 三个节点 swarm 的集群
- Docker Compose比Docker Swarm和Docker Stack有什么好处?
- Docker Swarm Mode 学习笔记(创建 Swarm 集群)
- docker Swarm 中如何在docker-compose使用变量
如何远程连接到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 的集群
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.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 集群)
Swarm 集群由管理节点与工作节点组成。
初始化集群
使用命令:docker swarm init
如果你的 Docker 主机有多个网卡, 拥有多个 IP 地址, 必须使用 --advertise-addr
来指定 IP ,例如:
docker swarm init --addvertise-addr xxx.xxx.xxx.xxx
我们在 Docker 主机上执行了此命令之后, 即会初始化 Swarm 集群, 也会讲此 Docker 主机初始化为一个 Manager 节点。
增加工作节点
在初始化 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 集群管理节点的 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-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使用变量的相关信息,请在本站查询。
本文标签: