O contêiner Docker não expõe as portas quando --net = host é mencionado no comando docker run

2

Eu tenho um contêiner do Docker do CentOS no host do Docker do CentOS. Quando eu uso este comando para executar a imagem do docker

docker run -d --net=host -p 8777:8777 ceilometer:1.x

o contêiner do docker obtém o IP do host, mas não possui portas atribuídas a ele. Se eu executar o mesmo comando sem "--net = host":

docker run -d -p 8777:8777 ceilometer:1.x

o docker expõe as portas mas com ip diferente. A versão do docker é 1.10.1. Eu quero que o contêiner docker tenha o mesmo ip do host com portas expostas. Eu também mencionei no Dockerfile a instrução EXPOSE 8777 mas sem uso quando "--net = host" é mencionado na execução do docker comando.

    
por arevur 23.02.2016 / 20:44

1 resposta

2

Se você usar --net=host o container compartilha (s) a pilha de rede do host e todas as interfaces do host estarão disponíveis para o container , ( de acordo com a referência de execução para o docker )

Se você já compartilha tudo, não precisa mapear explicitamente 8777 a 8777. Na verdade, implementar o mapeamento seria algo estranho: mapear 1234 para 8777 também faria o host ouvir no 8777? É por isso que você não vê nenhuma porta atribuída.

Apenas deixe de fora o --net=host e tente conectar-se no host para 8777, ele será enviado para o 8777 no container. Verifique se o seu contêiner é agnóstico para o endereço IP real que ele usa. O mundo exterior só verá o IP dos hosts.

    
por 23.02.2016 / 21:14