Do I need to create another overlay network and set up Nginx to be in that overlay network.
O contêiner nginx e seus aplicativos de destino precisam estar na mesma rede de encaixe para se comunicar de um contêiner para outro. Você pode adicionar o contêiner nginx a várias redes específicas de aplicativos ou criar uma rede proxy e anexar todos os aplicativos a essa rede. A partir do comando docker run
, você pode se conectar a uma única rede. Para várias redes, da maneira mais difícil, você pode fazer um docker create
e, em seguida, docker network connect
antes de executar um docker start
. A maneira mais fácil seria usar um arquivo docker-compose.yml que automatiza essas etapas para conectar seu contêiner a várias redes.
Is there a way to create a single volume in the swarm and access that volume from all nodes? I wouldn't even mind if the volume is stored in the swarm manager server as nginx loads config into memory, which would not affect the performance.
Você pode criar um volume que se conecte a um servidor nfs remoto. Aqui estão alguns exemplos dos comandos do docker para usar um compartilhamento remoto do nfs:
# create a reusable volume
$ docker volume create --driver local \
--opt type=nfs \
--opt o=addr=192.168.1.1,rw \
--opt device=:/path/to/dir \
foo
# or from the docker run command
$ docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,volume-opt=o=addr=192.168.1.1,volume-opt=device=:/host/path \
foo
# or to create a service
$ docker service create \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,volume-opt=o=addr=192.168.1.1,volume-opt=device=:/host/path \
foo