Orquestração de Contêineres

Docker - Comandos

Todos os comandos devem ser digitados após a palavra docker

Imagens e Containers
Imagem: nginx, busybox. Containeres: site, hello

                        // Baixar a imagem e criar um container
                        $ docker run --name newcontainer hello-world

                        // busybox vai ficar executando durante uma hora
                        $ docker run --name hello -d busybox sleep 3600

                        // nginx é a imagem, site é o container
                        // -d significa modo daemon (executa sem colocar output na tela)
                        // expondo a porta 80 do servidor
                        $ docker run --name site -d -p 80:80 nginx

                        // Testar o site e verificar as portas
                        curl localhost
                        netstat -nltp

                        // Criar a pasta teste dentro do container
                        $ docker exec hello mkdir teste
                        $ docker exec --help

                        // Para conseguir acessar o container em si 
                        $ docker exec -it hello sh  // -it significa acessar em modo interativo
                        # ls         // Listar as pastas do container
                        # exit       // Sair do container, apenas fecha a conexão 
                        $ docker ps  // Container continua rodando

                        // Para parar o container
                        $ docker stop site
                        $ docker ps -a      // -a de all para pegar tudo

                        // Para iniciar o container
                        $ docker start site 
                        $ docker ps -a 

                        // Listar os logs do container
                        $ docker logs site

                        // Baixar imagem do repositório
                        $ docker images               // Listar as imagens locais
                        $ docker rmi -f hello-world   // Forçar (-f) a remoção da imagem
                        $ docker pull hello-world     // Baixar a imagem do repositório

                        // Listar as pastas do container
                        $ docker exec hello ls 

                        // Remover container
                        $ docker rm -f hello

                        // Criar novamente o container
                        $ docker run --name hello -d busybox sleep 3600
                        
                        // *** A pasta teste não existe mais porque container foi removido ***
                        // *** Próximas aulas, ver como persistir ***

                        // Remover o container
                        $ docker rm -f hello

                        // Criar novamente o container e a pasta teste dentro dele
                        $ docker run --name hello -d busybox mkdir teste
                        $ docker ps // Não aparece container, foi derrubado na criação da pasta
                        $ docker ps -a 

                        // *** Usar isso para criar uma nova imagem ***

                        // 1º Hello é o container, 2º Hello é a imagem
                        $ docker commit --author="Heviane" --message="Criando imagem" hello hello

                        $ dive hello  // 1º camada é a imagem, 2º camada é a criação da pasta "teste"

                        // *** hello é um container criado a partir da imagem busybox ***
                        // *** A partir deste container hello criamos uma nova imagem chamado hello ***
                    
Versionamento
                        $ docker tag hello heviane/hello:1.0  // Prepara versionamento
                        $ docker login                        // Salva no config.json
                        $ cat /.docker/config.json            // Visualizar o arquivo
                        $ docker push heviane/hello:1.0       // Envia imagem local para remoto
                        $ docker search hello
                    
Importação e Exportação

                        $ docker rmi -f nginx  // Remove a imagem
                        $ docker rm -f site    // Remove o container

                        // Cria o container hello-2
                        $ docker run -d --name hello-2 heviane/hello:1.0 sleep 3600
                        $ docker exec hello-2 ls  // Agora container já é criado com a pasta "teste"

                        // *** A pasta está sendo persistida em disco, mas não o seu conteúdo ***

                        // Cria o container hello-3 com a pasta export
                        $ docker run -d --name hello-3 heviane/hello:1.0 mkdir export

                        // Exporta o container para o arquivo tar
                        $ docker export hello-3 > export.tar  
                        $ docker exec hello-3 ls

                        // Importar o container
                        $ cat export.tar | docker import - hello-export
                        $ docker images   // Criado a imagem hello-export