docker网络
Date: 2019/05/28 Categories: 工作 Tags: docker
基本的host和none以及bridge网络不提, 这篇主要记录overlay network的使用
如果使用所谓的standalone容器, 也即不使用swarm mode时,需要自己建立网络, 并非配地址池.
docker swarm
EADERS="Authorization: Basic token_here"
curl -XGET -H "$HEADERS" https://docker.oa.com/v2/andyfei/redisgraph/manifests/latest -k -vvv -L
可以看到实际的manifest是保存在registry.oa.com域名上的,
所以需要修改/etc/docker/daemon.json
为
{"insecure-registries": ["docker.oa.com", "registry.oa.com"]}
然后用docker service create --with-registry-auth registry.oa.com/andyfei/redisgraph
来创建服务
docker node ls
, 列出所有swarm中的nodedocker swarm init
, 初始化swarmdocker swarm join-token manager
, 在leader上执行, 可以打印如何joinswarm
check Docker Swarm with Private Registry for Micro-Services (Behind Corporate Proxy)
docker-proxy
内网默认阉割了NAT, 所以我们启动docker时都会带上--iptables false
选项,
此时要将容器内的端口暴露到host network需要使用代理,
docker-proxy
即是这样的一个进程.
docker network
我们可以用下面的命令列出所有的network, 这些network可以在docker run --net
中指定
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
32cc19f60ae5 bridge bridge local
55ac9852cab6 docker_gwbridge bridge local
56f4e96584a2 host host local
9ko4twbwyj5g ingress overlay swarm
xy21ykp4xwbh my-attachable-overlay overlay swarm
34b9975905e7 none null local
my-attachable-overlay
, 这是一个overlay network我们创建用来让不同host里的docker container可以互相通信docker_gwbridge
, 这是个网桥, 可以让swarm mode下的容器和host通信ingress
, 可以让docker 容器互相通信的默认网络
Standalone container overlay network
建立网络, 必须要加上--attachable
来让standalone container可以连上这个网络.
docker network create -d overlay --attachable my-attachable-overlay --subnet 192.168.0.1/24
注意如果要用--publish
来load balance服务到host的话, 可能默认的Ingress
network会和宿主网路ip冲突, 默认的range是”IPv4Address”: “10.255.0.3⁄16”
connect container to multiple network
just start your container with --net none
, than run ocker network connect NETWORK_NAME CONTAINER_NAME
host network with swarm mode
根据这个issue, 似乎需要17.06才支持这个组合, 或者使用老的standalone swarm