Docker: Trabalhando com network
Vejamos nesse artigo como podemos criar um rede no nosso host com o Docker. Irei demonstrar também a criação de um contêiner partir da imagem windowsservercore e como podemos habilitar o seu IIS.
Introdução
No momento da instalação do Docker ele cria um rede 172 dentro do nosso host. Quando nós criamos os nossos contêineres eles utilizam essa rede. Podemos ver ela na imagem abaixo:
Junto com a rede 172 o instalador do Docker criar três redes no Linux e duas no Windows. Podemos lista-las utilizando o comando docker network ls.
Linux
$ docker network lsNETWORK ID NAME DRIVER
7fca4eb8c647 bridge bridge
9f904ee27bf5 none null
cf03ee007fb4 host host
Windows
$ docker network lsNETWORK ID NAME DRIVER
e07a8b49bc22 nat nat
9f904ee27bf5 none null
Essas redes são construídas dentro do Docker. Quando nós criamos um contêiner, nós podemos utilizar o parâmetro --network
para especificar uma delas respeitando as configurações do nosso host (Windows ou Linux). Para os próximos passos eu não irei abordar a diferença entre elas, caso você tenha interesse em aprofundar um pouco mais sobre esse assunto, segue o link da documentação oficial do Docker passando todos os detalhes sobre cada uma delas.
Criação de rede
O Docker nos permite criar um ou mais redes conforme mencionado a cima, para esse artigo nós iremos criar uma rede nat chamada redelocal. Para isso, execute o comando abaixo no seu terminal.
docker network create --driver nat redelocal
Baixando a nossa imagem
Com a nossa rede criada, nosso próximo passo será baixarmos a imagem microsoft/windowsservercore. Para isso, execute o seguinte comando no seu CMD.
docker pull microsoft/windowsservercore
Assim que ele terminar de baixar a nossa imagem, execute o comando docker images para que possamos ver ela na lista de imagens.
Criação do Contêiner
Coma a imagem no nosso host, vamos agora criar o nosso contêiner. Para isso, execute os comandos abaixo no seu CMD.
docker run -it --name web13 microsoft/windowsservercore cmd
- docker run: para criação do contêiner.
- -it: para entrarmos no modo interativo.
- -name: para passarmos um novo para o nosso contêiner, sem esse parâmetro ele irá dar um nome aleatório.
- cmd: para acessarmos o CMD do nosso contêiner.
O comando acima irá criar um novo contêineres com o nome: web013 e abrir um CMD para que possamos ver o IP que ele pegou. Execute o comando ipconfig, ele irá mostrar as informações de rede que do nosso contêiner.
Habilitando o IIS
Ainda de dentro do nosso contêiner, nós precisamos agora do powershell. Para isso, digite powershell no CMD.
Agora para instalar o IIS execute o comando abaixo no seu CMD.
Install-WindowsFeature web-server
Podemos ver a execução desse comando na imagem a baixo:
Adicionando Contêiner na REDE
Para que possamos adicionar um contêiner em uma rede depois de criado, nós utilizamos o comando: docker network connect (nome da rede) (nome ou id do container).
Antes de adicionarmos ele, nós precisamos dar um stop nele. Para isso execute o comando docker stop (Id ou nome do seu contêiner) , quando ele parar o seu contêiner, execute o comando abaixo e depois suba ele novamente com o comando docker start (Id ou nome do seu contêiner).
docker network connect redelocal (Id ou nome do seu contêiner)
Agora para que possamos verificar se o nosso contêiner esta na rede correta, vamos utilizar o comando docker inspect (id ou nome do contêiner). O retorno desse comando será um json, podemos ver na imagem abaixo que o nosso contêiner foi adicionado corretamente na rede local. Notem que ele está em duas redes, isso não interfere na sua execução.
Por fim, abra o IP do seu contêiner no navegador e veja que o IIS está foi instalado corretamente.
Esse foi um artigo simples que eu resolvi criar para demonstrar uma solução que eu estou adotando para trabalhar com Docker em um ambiente Windows.