Docker é um ambiente de virtualização de contêiner que pode estabelecer ambientes de desenvolvimento ou de tempo de execução sem modificar o ambiente do sistema operacional de base. Ele tem a capacidade de implantar instâncias de contêineres que fornecem uma virtualização usando o kernel do host, o que o torna mais rápido e leve do que a virtualização de hardware completa.
Os contêineres que produzem Kernel Panic induzirão Kernel Panic no sistema operacional do host.
Para instalar vamos utilizar o snap
. Só lembrando que o snap está disponível para diversas distribuições, como: Arch, Gentoo, Linux Mint e entre outras. O legal dele é que iremos evitar problemas de versões do Docker.
sudo snap install docker
- Instala o Dockerps -A | grep docker
- Verifica se o daemon já está rodandosudo docker run hello-world
- Rodando seu primeiro contêinerA saída será algo do tipo:
sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Verique quais grupos estão disponíveis no seu sistema, rode o comando: cat /etc/group | cut -d: -f1
(para exibir grupos ao lado: cat /etc/group | cut -d: -f1 | tr '\n' ' ' && echo
) , se entre os grupos listados estiver docker , então esse grupo existe, se quiser rodar um comando que lhe diz se existe ou não o grupo, rede o comando: [[ $(grep 'docker' /etc/group) ]] && echo 'Existe o grupo docker' || echo 'Não existe o grupo docker'
Use esse passo somente se não existir o grupo docker. Então crie o grupo com o comando: sudo groupadd docker
.
Agora adicione seu usuário ao grupo docker com o comando: sudo usermod -aG docker $USER
(ou sudo gpasswd -a $USER docker
) e verifique se você agora está no grupo com o comando groups $USER
.
Se quiser remover o usuário do grupo, rode:
sudo gpasswd -d $USER docker
docker run hello-world
, se rodar é porque está tudo certo.Para esse exemplo vamos utilizar um aplicativo de Shell Script: Funções ZZ
Primeiro, baixe a imagem do contêiner para a sua máquina:
Se fizer parte do grupo docker como anteriormente mencionado, ignore o sudo para todos os passos seguintes.
sudo docker pull funcoeszz/zz
A saída será algo do tipo:
sudo docker pull funcoeszz/zz
Using default tag: latest
latest: Pulling from funcoeszz/zz
386a066cd84a: Pull complete
4e1412bf2f54: Pull complete
9e64dc8a144a: Pull complete
4efdf586deec: Pull complete
856d94476b10: Pull complete
Digest: sha256:23a5e20ceeb907e39652c4b130d5a6a8d77bc25a4aeba003a66871ada88d07dc
Status: Downloaded newer image for funcoeszz/zz:latest
Liste as imagens que já estão na sua máquina:
docker images
Agora basta rodar o contêiner e informar qual função você quer usar, junto com seus parâmetros, exemplo: sudo docker run --rm funcoeszz/zz maiusculas tá funcionando
Saída:
# --rm é opcional
# docker run --rm funcoeszz/zz maiusculas tá funcionando
sudo docker run funcoeszz/zz maiusculas tá funcionando
TÁ FUNCIONANDO
docker search nginx
docker info
e outras, consulte: docker --help
ou docker
somenteO comando docker run pega a imagem do Docker como modelo e produz um contêiner a partir dela.
docker images
ou docker image ls
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -a -q)
ou docker rmi ID_IMAGE
mkdir myshell && cd myshell
vim Dockerfile
FROM ubuntu:19.04
ENV PATH=/app:$PATH
COPY myshell.sh /app/
WORKDIR /app
ENTRYPOINT ["./myshell.sh"]
vim myshell.sh
#!/bin/bash
echo "Testando essa bagaça ... [OK]"
Ou
Esse caso para exemplo de servidor, para jogar para background
#!/bin/bash
while true; do
echo -en "Rodando meu script, hora agora: $(date +%H:%M:%S)\r\r"
done
chmod +x myshell.sh
docker build --tag=myshell .
docker image ls
docker run myshell
ID do conteiner:
docker container ls
[Create Repository +] , estilo criar um repositório no GitHub: nome, descrição, public..create
docker login
, insira seu nome de usuário[ENTER] e depois sua senha[ENTER]docker tag myshell terminalroot/myshell:v1
ou sem tag: docker tag myshell terminalroot/myshell
docker push terminalroot/myshell:v1
ou se você não inseriu tag: docker push terminalroot/myshell
Se quiser testar é só remover as images e os conteiners todos e depois fazer o pull
explicado no início e ver se está funcionando de verdade.
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker images
docker rmi IMAGE_ID [nImage_ID ...]
groups $USER
sudo groupdel docker
groups $USER
Listando os snaps e remove o snap:
snap list
sudo snap remove docker`
snap list
sudo snap refresh
Mais inforções sobre snap
Mais em: https://alternativeto.net/software/docker/
docker virtualizacao gnulinux ubuntu