Vinculando contêineres do Docker

4

Eu tenho que migrar minha instalação do WordPress para o meu próprio servidor para que o SSL funcione corretamente. Foi originalmente na hospedagem compartilhada GoDaddy, que não permite a instalação de um certificado SSL externo.

Sendo um pouco paranóico e informado sobre segurança, gostaria de executar os serviços dentro dos contêineres do Docker para limitar os danos no pior cenário possível.

O que não tenho certeza é como conectar os contêineres do Docker. Por exemplo, eu tenho um contêiner do Docker responsável por executar o MySQL / MariaDB e não sei como eu poderia compartilhar esse serviço com outro contêiner do Docker executando FastCGI que está hospedando e executando meu código PHP do WordPress.

Meu servidor web (NGINX) que está atualmente sendo executado fora de um contêiner Docker não terá nenhum problema de fazer proxy de coisas junto a uma porta exposta em um contêiner Docker, mas como o servidor FastCGI (ou seja: PHP) será capaz de alcança o contêiner do MySQL?

Existe um guia que detalha como fazer o pareamento de vários serviços independentes como este no Docker?

    
por Naftuli Kay 30.03.2014 / 20:32

2 respostas

0

Na verdade, o Docker não faz virtualização, é apenas uma ferramenta que lida com imagens e usa a virtualização de contêineres do LXC para executá-las. Eu acho que você está realmente procurando por LXC e suas capacidades, aqui. O LXC pode fazer redes virtuais e o MySQL pode ser acessado pela rede. A única coisa que você precisa é conectar os blocos de construção juntos;).

Em uma configuração típica, cada host tem seu próprio endereço IP e conjunto de portas abertas e cada host pode acessar os serviços TCP / IP de outros hosts pela rede virtual. A segurança é tratada pelo kernel do Linux. Uma maneira de lidar com a segurança é o bom e velho firewall baseado no iptables. Mas pode haver outras formas baseadas na rotulagem do selinux.

    
por 30.03.2014 / 20:59
3

A forma como os contêineres do Docker funcionam é que eles são isolados por padrão, a menos que você os configure de outra forma.

Para responder à sua pergunta, você pode abrir as portas desejadas e também vincular contêineres por meio dessas portas, para que elas se comuniquem apenas pela porta especificada.

Ao especificar em um Dockerfile, esse comando é chamado de 'EXPOSE': link

EXPOSE  41000

Ao iniciar um contêiner, você pode passar a porta que deseja expor também, logo ao iniciar (substitui o que pode ser especificado no Dockerfile original):

sudo docker run -p 41000:41000 -d <your username>/<your image name>

-p, --publish=[] Publish a container's port to the host format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort (use 'docker port' to see the actual mapping)

Veja também links, link

Outras leituras sobre o Wordpress e o Docker:

por 22.05.2014 / 16:31