Salve, Deus, beleza? Continuando essa saga aqui do nosso módulo de Docker, agora nós vamos brincar um pouquinho mais com os terminais dos containers porque é algo essencial. A gente vai o tempo inteiro querer acessar o terminal do container para poder executar qualquer tipo de comando que for necessário. Então, a gente precisa saber muito bem quando acessar, existem formas diferentes. E a gente vai falar um pouquinho também sobre usuários, porque dependendo de qual usuário, que é o padrão ali dentro do container, nós podemos ter limitações para poder executar alguns comandos, ou se a gente for root, não tem limitação nenhuma. E é muito importante também saber sobre isso. Então, bora aqui para o nosso terminal. A gente aprendeu já que se eu executar, eu vou começar a executar sempre agora os containers com o remove, detest e o name. Vamos executar aqui esse container do Nginx. Inclusive, já é um container que já existe. Então, vamos executar mais um. Se eu executar o container dessa forma aqui, como que eu entro no terminal dele? Porque eu poderia passar o bash aqui no final vamos fazer aqui um outro exemplo posso passar um bash se eu passar um menos menos e t olha o tanto de parâmetros que a gente já passou na verdade ele está pegando imagem errada aqui estou passando... Na verdade é porque está errado. Eu passo "-it", vamos colocar "-it", Vamos colocar o "-it", aqui. Com o detest não pode, né? Estou rodando já um monte de coisa. A gente vai administrando aqui na aula. Eu não tenho batch, eu tenho sh, nesse caso. Porque nem todo container vai ter batch, né? Então, olha só. Eu tenho aqui, então, o terminal do Nginx. Vamos acessar aqui os logs dele. Posso fazer Nginx 3, como eu criei com 3. Não tem log nenhum, porque o comando principal foi sobrescrito pelo SH. Então, ele não está rodando o NGINX nesse caso. A gente pode até fazer aqui um PSALX lá dentro. Na verdade, PSALX estou aqui. Eu estou mudando de terminal. Eu não tenho NGINX rodando. Mas vai acontecer um cenário que agora eu saí, eu não tenho mais esse Nginx 3, inclusive ele é removido, né? Se eu tentar criar de novo aqui, ele vai deixar. Mas a gente quer ter um cenário que eu quero executar o Nginx, deixar ele rodando lá, mas entrar no container e executar comandos. Então, a gente vai... Pode usar aqui o "-d". Ele executou. Então, com um logs no Nginx 3, eu tenho aqui o Nginx rodando. Mas como que eu acesso o container? Eu faço o exec, "-it", que é o ativo modo interativo, faço o exec menos o modo interativo passo o id ou o nome do container e aqui eu tenho o nginx3 e aí passo o bash, o bash obviamente ele não vai ter, tá vendo que ele dá aqui o erro ele tá falando que o oci run time, isso aqui na verdade é o run C que tá rodando por trás mas pode poder ser outra coisa não consegue executar ali o bash porque não tem bash então vamos executar o sh então aqui agora eu estou com o index rodando mas eu entrei lá no container e se eu não me engano esse carinha aqui é um Debian ou não não existe o que eu tenho aqui? Se eu não me engano, esse carinha aqui é um Debian, ou não? Apt não existe. O que eu tenho aqui? APK? APK, na verdade, é um Alpine, né? É uma distribuição Alpine. Dá para poder rodar lá o comando que a gente consegue ver o S-release aqui. Alpine Linux. Então, qual que é o usuário que eu estou aqui no momento? Eu posso rodar um root. Então, estando como root, eu posso fazer um apk, que é o apt do Alpine Update. Se eu quiser fazer a instalação de alguma coisa, eu não tenho o curr aqui. Eu tenho o git. Não, não tenho o git. Então, se eu quiser fazer um git, depois que eu fiz o update, eu faço a instalação de um git. Dando um exemplo, agora eu posso rodar o git aqui dentro. Então, eu posso instalar ferramentas no container. Lembrando que quando esse container morrer, morreu tudo isso que eu fiz. Os containers não vão ter o Git, somente esse aqui que eu fiz a instalação. No momento que eu quiser sair, pronto. Se eu quiser voltar, ele está executando, eu voltei novamente. Então, com o run, a gente acaba desvirtuando algum processo inicial que seria executado ali, mas às vezes a gente quer entrar ali no container para poder fazer uma coisa ok, mas normalmente é mais executado o Docker Exec, mas a gente tem que saber ambas as formas. E isso que é importante. Deixa eu ver o que eu estou de execução aqui. Eu estou com três Nginx executando. Então, eu poderia fazer um Docker Exec com o nome, ou eu tenho Nginx 3, 2 e 1. Ou posso fazer um docker stop, que ele vai parar todos os meus containers. Por que saber o usuário? Por que eu coloquei o usuário aqui? Isso é importante. Vamos fazer aqui a execução do node vou pegar aqui o node 1 eu não sei se eu tenho depois a gente muda o nome se der conflito vai ser o node 20 e Slim. Aí a gente pode colocar aqui, não tem nada para poder rodar exatamente com o Node. Vamos colocar o Bash aqui para... Um já existe, eu vou colocar dois. Dois não existe, tá? Então, foi executado aqui. Agora eu posso fazer um docker exec-it node2 bash. Entrei no node. Qual que é o usuário que eu estou aqui no momento? Eu estou como root. Essa imagem que é derivada de um Debian, então tem o apt. Então se eu quiser fazer, acho que um tem o curr nessa imagem, fazer um apt update, apt install o curr. Vou fazer chamadas aqui. update, apt install, occur. Fazer chamadas aqui. Isso é muito comum da gente habilitar algumas coisas no container para poder trabalhar. Então, se eu sou root, não tem sudo. Lembrar de um detalhe, gente. Isso aqui não é comum. Pode ser que algum container tenha sudo, mas é muito raro. O que vai definir exatamente o usuário que você está logado ali no momento. Mas vai acontecer situações que o usuário corrente do seu container não é o root. Não é o root. Então, você não conseguiria rodar um apt, porque você não tem sudo ali. Você teria que logar como root. Vamos fazer uma mudança aqui de usuário. Primeiro, vamos entrar aqui dentro do container. Se eu fizer um cat barra etc barra pswd, eu consigo ver os usuários que eu tenho do container. Eu tenho o usuário 1000 lá, que equivale ao meu usuário 1000 aqui, que o meu ID do meu usuário é 1000. Aqui nesse Linux do WSL. Então, se eu quiser logar no terminal como esse usuário, eu posso passar o usuário node. Deixa eu passar isso aqui antes do "-it". Agora, olha o que eu tenho. Então, se eu tentar fazer um install de git ele vai dar um permission deny na minha cara então pode ter situações que a sua imagem já está delimitada lá que é um usuário não root por padrão é quando você loga tá assim e aí você poxa eu preciso instalar alguma coisa, não consigo, não tem sudo aqui. Então, o que você faria? Menos o root. Nesse caso desse exemplo, não precisaria entrar com o root, é só tirar essa opção que ele já vai entrar com o root. Mas isso aqui é muito comum. Então, agora eu posso fazer o apt e fazer a minha instalação. Então, isso aqui é uma dica muito importante. Depois, mais para frente, a gente vai falar sobre como não executar containers com root. É mais seguro, porque qualquer coisa que tiver ali vai poder ter todas as permissões para poder fazer qualquer coisa dentro do seu container e ficar executando algum código malicioso. Enfim, a gente tem aqui essas duas formas de URL direto. Você desvirtua o comando principal do container ou exec depois que o container já está rodando. Então, vamos seguir nossa saga. É isso aí e até a próxima.