3
respostas

Usando Commit

pessoal criei um container wordpress e fiz algumas modificações no wordpress, tipo criei um titulo , postei uns artigos e coloquei um rodapé.Depois commitei esse estado em uma imagen, fiz o mesmo com o mysql, fiz o mapeamento de portas e setei as senhas testei no browser e estava tudo ok. Depois commitei nas imagens.Depois baixei essas imagens em outro servidor e criei os containers dessas imagens,mas tudo que fiz não foi preservado, voltou tudo para o estado zero, nas imagens commitadas não fiz mapeamento de portas e nem setei senhas pois imaginei que isso já tinha sito commitado anteriormente. O que pode ter acontecido pessoal.Rodei as instruções:

docker run --name dbmysql   mysql/imagemcommitada

docker run --name meublog wordpress/imagemcommitada
3 respostas

Olá, tudo bem?

De acordo com o código que você utilizou, você subiu os containers de maneira isolada, não passando nenhum parâmetro para configuração de portas e nem para "linkar" eles. Você poderia colocar aqui todos os códigos que utilizou até antes de tentar rodar a imagem? Como os de commit e qualquer outro.

Segui os passos ensinados, veja:

Criando o container mysql e wordpress:

docker run --name dbblog1  -e MYSQL_ROOT_PASSWORD=1234 -d mysql

docker run --name blog1 --link dbblog1:mysql -e WORDPRESS_DB_PASSWORD=1234 -p 80:80 -d wordpress

Commit:

docker commit -m "instalação do mysql"  dbblog1  mysql/blog

docker commit -m "instalação do wordpress"  blog1 wordpress/blog

//Depois mandei as imagens mysql/blog e wordpress/blog para o dockerhub e baixei em outro servidor docker e tentei criar containers com essas imagens com a instrução:

Docker run -it mysql/blog bash

Docker run wordpress/blog

Minha expectativa era poder ver o wordpress com as mesmas configurações que fiz no container no primeiro servidor, eu criei um titulo, fiz alguns posts e imaginei que criando um container dessas imagens eu teria tudo como deixei ,mas percebi no segundo servidor que ele criava um container do zero e perdia todas minhas configurações.Isso procede?

Procede, perde mesmo. Neste caso, os dados não serão persistidos, porque todo container é efêmero, ou seja, não guarda estado de dados. Isso talvez possa ser feito com o conceito de volumes do docker, o qual você consegue gravar certos dados direto no Host, passando o parâmetro -v.

Por exemplo:

docker run -d -e MYSQL_ROOT_PASSWORD=1234 -v ~/meuDiretorio/:var/lib/mysql mysql

Se for feito esse mapeamento, tudo o que o container gravar em "/var/lib/mysql" será escrito em "~/meuDiretorio"

Se não passar o parâmetro -v, tudo o que for gravado em "/var/lib/mysql" será perdido pois não informei para onde deve ser redirecionado.

As imagens têm que ter somente o necessário.

Mas no seu caso de testar no segundo servidor, foi um teste que você quis fazer à parte ou isso é pedido no curso?