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.
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
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
Code: Select all
docker port buceta 22
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
Code: Select all
ssh [email protected] -p 2424
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
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
Depois vou colocar mais coisas aqui para vocês usarem, ok!