bridge:桥接网络
默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了
none:无指定网络
使用
--network=none
,docker 容器就不会分配局域网的IP
host: 主机网络
使用
--network=host
,此时,Docker 容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。
创建自定义网络:(设置固定IP)
启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下:
步骤2: 创建Docker容器
~ docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash
这个时候,创建的Docker容器就会持有 172.18.0.2 这个IP.
Docker 默认网络Docker安装后,默认会创建下面三种网络类型:$ docker network lsNETWORK ID NAME DRIVER SCOPE9781b1f585ae bridge bridge local125
Docker
Compose适用于全栈lancache。
这个
docker
-compose旨在作为运行我们的lancache堆栈的示例,它将以开箱即用的方式运行,对您的本地
IP
地址的.env文件.env更改很少。
您必须至少设置LANCACHE_
IP
和DNS_BIND_
IP
。 强烈建议您将CACHE_ROOT更改为您选择的文件夹,并将设置为适合您的存储容量的值。
USE_GENERIC_CACHE
它控制DNS服务中的
IP
分配-假定默认情况下, LANCACHE_
IP
给定的每个
IP
上的每个服务都是可访问的。 有关
自定义
DNS服务行为的文档,请参阅项目。
LANCACHE_
IP
这为DNS服务提供了一个或多个
IP
地址,以播发缓存的服务。 如果您的缓存主机只有一个
IP
地址(例如192.168.0.10 ),请在此处
指定
。 如果您的缓存主机具有更多
IP
地址,则可以列出所有
IP
地址
RUN apt install vim --assume-yes
ADD jdk-8u231-linux-x64.tar.gz opt/fsd
ENV JAVA_HOME=/opt/fsd/jdk1.8.0_231
ENV PATH=$...
自定义
网桥
除了默认的
docker
0 网桥,用户也可以
指定
网桥来连接各个
容器
。
在启动
Docker
服务的时候,使用 -b BRIDGE或–bridge=BRIDGE 来
指定
使用的网桥。
如果服务已经运行,那需要先停止服务,并删除旧的网桥。
$ sudo service
docker
stop
$ sudo
ip
link set dev
docker
0 down
$ sudo brctl delbr
docker
0
然后创建一个网桥 bridge0。
$ sudo brctl addbr bridge0
$ sudo
ip
addr add 192.168.5.1/24 dev
由于工作需要,需要给
Docker
设置固定
IP
,在网上的查找了一些资料,自己试着实践一下,留个笔记。
经常用
Docker
模拟项目在生产环境中的部署,往往需要同时开好几台
Docker
容器
,而且有时安装的软件需要绑定
Docker
局域网中的其他
容器
,如 MongoDB 副本集部署的时候,就需要绑定其他
容器
的内网
IP
。
但是,
Docker
每次重启后,
容器
的
IP
地址会变化,查询了资料,
Docker
是支持设置固定
IP
的。
Docker
默认
网络
Docker
安装后,默认会创建下面三种
网络
类型:
$
docker
network ls
NETWORK ID NAME DRIVER
php服务:172.16.10.30
解决
容器
固定
ip
地址问题:
注意:因为当
容器
停止时或者将
容器
删除,再次运行相同的
容器
,它的
ip
地址不再时原来的地址,所以我们需要
自定义
一个网段,来
指定
容器
的
ip
地址。
项目操作:
(1) 首先
自定义
一个
网络
:
[root@sqm-
docker
01 ~]#
docker
network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 mynet
基于
docker
的分布式爬虫服务特性多机多
IP
,充分利用
IP
资源服务自动发现和注册(基于 etcd 和 registrator)负载均衡服务端客户端通信基于 gRPC,支持多种编程语言的客户端可设置抓取超时支持 GET、HEAD、POST 方法支持
自定义
header如何部署第一步:配置 etcd我把 etcd
容器
化了,并开发了脚本使得部署 etcd cluster 非常容易,见 github.com/huichen/etcd_
docker
为了容灾,请至少在三台服务器上运行 etcd 实例。为了方便调用,你可以固定 etc endpoint 的端口号,并在所有机器上手工添加 etcd host 的 hostname。第二步:启动 registrator 服务发现程序你需要在集群的每一台服务器上都运行 registrator,这使得我们可以自动发现和注册分布式服务
docker
run -d --name=registrator --net=host --volume=/var/run/
docker
.sock:/tmp/
docker
.sock \
gliderlabs/registrator etcd://<etcd 接入点的
ip
:port>/services请把上面的 etcd 接入点换成你的 etcd 地址。第三步:部署 zerg 服务进入 service_container 子目录,然后运行./build_
docker
_image.sh这会生成 unmerged/zerg
容器
。然后在集群的每台服务器上启动
容器
:
docker
run -d -P unmerged/zergregistrator 会自动注册这些服务到 etcd。如果单机有多个
IP
,你可以单机启动多个
容器
,并在 -P 中分别
指定
IP
。第四步:调用样例代码进入 examples 目录,运行go run zerg_crawl.go --endpoints http://<你的 etcd host:
ip
> --url http://taobao.com可选步骤1、重新生成 protobuf serviceprotoc protos/crawl.proto --go_out=plugins=grpc:protos -I protos/2、本地测试启动本地服务。进入 service_container 目录,然后运行go run service.go然后进入 examples 目录,运行go run single_machine_crawl.go --url http://taobao.com
标签:Zerg
注意:它的实际父级是因此我们包含了 mesos 库。
这个
容器
应该用于运行 Spark并打包了 master 需要的一切。
为了使这更容易,请提供一个 url 来获取您的
自定义
。
应该使用
Docker
的
指定
。
设置后,这个“本质上”运行为
Docker
file 定制的。
docker
-H tcp://${HOST_
IP
_0}:2375 run -it \
--net=host \
-e APP_USER=root \
-e APP_GROUP=root \
-e SCALA_VERSION=2.10.5 \
-e SPARK_HOME=/spark \
-e SPARK_CONF_DIR=/spark/conf \
-e INSTALL_DIR=/job-s
备注:这里选取了172.172.0.0网段,也可以
指定
其他任意空闲的网段
docker
network create –subnet=172.172.0.0/16
docker
-ice
注:
docker
-ice为
自定义
网桥的名字,可自己任意取名。
第二步:在你
自定义
的网段选取任意
IP
地址作为你要启动的container的静态
IP
地址
备注:这里在第二步中创建的网段中选取了172.172.0.10作为静态
IP
地址。这里以启动
docker
-ice为例。
docker
run -d –net
docker
-ic
[root@VM_0_5_centos
docker
File]#
ip
addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:
文章目录一、宿主机
网络
二、
Docker
网络
三、
网络
模式3.1 bridge模式3.2 host模式3.3 none模式3.4 container模式四、
网络
IP
生产规则五、
自定义
网络
两个或者多个之间的
容器
如何相互通信?
容器
重启后
IP
变化如何解决?
容器
内部间如何通过
容器
名通信?
如何
自定义
网络
,让同属一个服务群的
容器
都加入到同一个
网络
?
一、宿主机
网络
Docker
网络
用于处理宿主机和
容器
内
网络
通信
容器
间的互联和通信以及端口映射
容器
IP
变动时候可以通过服务名直接
网络
通信而不受到影响
a656678879: