Page 1 of 1

O que é DOCKER , usando Docker

Posted: 13 Jan 2018, 22:01
by javanunes
Vamos ser diretos:

Container é uma virtualização que usa o kernel do sistema hospedeiro. É tipo o Jail do FreeBSD. Você pega todos os arquivos de um sistema operacional, faz uma raiz falsa e roda tudo lá dentro. É tipo um cientista maluco que precisa fazer experiencias no corpo de uma mulher, ao invés dele fazer na mulher e correr o risco de danificá-la , ele faz nos fetos que ela tem na barriga,se um quebrar, ela gera outro. E se ela quiser dar o feto para outra grávida continuar, ela pode. Isso é o container.

Image
Vamos criar um container(sistema dentro de outro isolado tipo VmWare mas sem precisar um SO completo como guest) que rode um sshd , diferentemente do Jail do FreeBSD que você tem que compilar e montá-lo na unha, o docker faz a montagem do sistema quase de forma automática para você.

E qual a vantagem disso?
Bom, ao invés de ter que instalar e configurar (deploy) na empresa nova onde você está, você compacta e leva a imagem pra qualquer lugar com você, instala o docker e pronto.

Se logue como root.
Temos que criar uma pasta vazia , afinal na criação da imagem do container ele irá sugar tudo pra si, se você usar sua pasta base, ele irá criar uma imagem gigantesca por causa das suas músicas e filmes pornô que vc guarde.
Então entre numa pasta vazia e crie um arquivo chamado  Dockerfile , só pode ser esse o nome , ok?!!
Dentro dele coloque esses textos escrotos:

Code: Select all

FROM ubuntu:16.04
MAINTAINER JavaNunes
RUN apt update && apt install -y openssh-server
RUN apt install -y ftpd samba smbclient sendmail nmap vim
RUN mkdir /var/run/sshd /mnt/c /mnt/x /mnt/dvd /mnt/ntfs 
RUN echo 'root:donabucetildes' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN echo "buceta.com" > /etc/hostname
RUN echo "RedHat (calcinha preta)" > /etc/issue
RUN echo "RedHat (calcinha preta)" > /etc/issue.net


# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
EXPOSE 21
EXPOSE 445
EXPOSE 139
EXPOSE 25



A linha FROM recebe o parâmetro ubuntu:16.04 , ou seja, ele vai baixar lá da empresa Docker uma versão pobrezinha(sem parte gráfica e outros apetrechos) do ubuntu 16.04 para você fazer os seus caprichos.

Feito o arquivo, vamos montar a nossa imagem do ubuntu fake , vamos chamar essa imagem de hdporno e o nome do container de buceta, ok! Nada de exemplos grandiosos e comportadinhos que os outros sites imbecis usam!

Code: Select all

docker build -t hdporno .

O ponto significa local, ou seja, ele vai procurar o arquivo Dockerfile na pasta onde você já esta (tem que se uma pasta limpa)
O comando acima vai baixar e construir a imagem ou ninho chamado hdporno

Code: Select all

docker run -d -P --name buceta -h buceta.com hdporno
Agora com o comando acima, você irá acionar o container buceta  usando a imagem hdporno

Code: Select all

docker port buceta 22
O comando acima manda o container buceta usar a porta 22 , mas na prática , o sshd será acessado usando a o aviso que esse comando irá gerar, geralmente esse comando acima vai gerar um aviso tipo:
0.0.0.0:2424

Pra fazer o docker buceta acordar para vida eu posso usar entre outros comandos esse aqui

Code: Select all

docker start buceta

Onde 2424 será qualquer numero para você acessar o ssh do seu container , para descobrir o IP do container basta usar o comando ifconfig no seu Linux. No meu caso para eu acessar o ssh do container buceta eu uso

A senha do root para entrar é donabucetildes


Para ver os containes que você criou, basta usar o comando

Code: Select all

docker ps -a

Digamos que você queira ver quais foram os arquivos modificados do container buceta, os que foram adicionados serão mostrados com letra ( A ), o que foram modificado terão a letra ( C )
para ver use o comando

Code: Select all

docker diff buceta


Para listar as imagens , use o comando

Code: Select all

docker images

Para apagar o container buceta

Code: Select all

docker rm -f buceta

Para remover a imagem

Code: Select all

docker rmi -f hdporno

Se você quiser entrar dentro do seu container para xeretar, pode usar o seguinte artíficio 

Code: Select all

docker exec -i -t buceta /bin/bash

Agora digamos que eu queira fazer um novo container reaproveitando a mesma imagem/disco/iso chamada hdporno , só que dessa vez, ao invés de querer que o meu servidor fake ssh ouça na porta 22, eu irei querer que ele ouça na porta 2222 do meu servidor mesmo, para fazer isso irei criar e startar um novo container chamado buceta2 baseando me no container buceta, vejam só:

Code: Select all

docker container run -d -p 2222:22 --name buceta2 hdporno
docker start buceta2
Pronto, agora basta eu usar ssh localhost -p 2222 para testar

Para fazer uma exportação e poder levar o container para outros locais diferentes como pendrive, cd, dvd ou internet, você pode usar um comando que jogue toda a imagem para um arquivo .tar (tipo um .zip mas do Unix)
vamos então usar um comando para exportar o a image do container(como se fosse o hd do sistema) para
um arquivo tipo tar, lembrando que esse comando abaixo só salva a imagem sem as mudanças feitas,  para salvar as mudanças use commit

Code: Select all

docker save hdporno > container_buceta.tar

Você quer salvar uma imagem com as alterações que vc fez ao decorrer do tempo? Use a gambiarra a baixo, onde
242424242424 é o ID da imagem que será criada (no seu caso o número será diferente) , você pode exibi-lo usando docker images , e buceta será o container que dará origem a imagem altamente personalizada e alterada:

Code: Select all

docker commit -a JavaNunes buceta
docker tag 242424242424  hdsata
docker save hdsata > container_buceta.tar

Se um dia você limpar tudo, apagar o container e a imagem e quiser restaurar a imagem que salvou acima, use:

Code: Select all

docker load < container_buceta.tar
docker run -d -P --name buceta -h buceta.com hdsata


Agora iremos mostrar como mudar o nome de uma imagem sem nome. só use isso para imagens sem nome pois se você usar com imagens que tem nome, ele irá criar outras imagens ocupando o disco.
Ao dar o comando
docker images
<none>              <none>              242424242424        4 minutes ago       100 MB
para renomear a imagem do docker sem nome acima eu uso:

Code: Select all

docker tag 242424242424  hdsata
Agora a imagem acima terá o nome de hdsata




Depois vou colocar mais coisas aqui para vocês usarem, ok!