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中的node
  • docker swarm init, 初始化swarm
  • docker 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即是这样的一个进程.

The 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.316

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

Reference