8
respostas

Dúvida - Startando Container

Bom dia pessoal, tudo bem?

docker pull ubuntu
docker run --name linux -d ubuntu
docker ps

Quando utilizo o "docker ps" após estes comandos acima, aparece o seguinte:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
25125e731805        mysql               "docker-entrypoint.sh"   4 minutes ago       Up 3 minutes        3306/tcp            database

Que apenas o mysql está startado, então eu utilizo o comando:

Docker start linux
linux

Ele não retorna nenhum erro, apenas o nome "linux", como se o comando tivesse sido bem sucedido, então utilizo o comando para acessar o container:

docker exec -it linux bash
Error response from daemon: Container e1aedbb6b859a56185270bc3deee3a55def09d53349b42331384b0291f757d43 is not running

E agora pessoal?

8 respostas

Fala aí Caio blz de novo? kk

Então o que acontece é que o comando padrão da a imagem do Ubuntu é o bash (e a menos que você envie comandos ele, o bash não "prende" o shell para você. Por isso usamos o bash sempre com a opção -it para que seja anexado/"preso" um shell para o processo de bash. )

Ao criar um container em deamon ele executa o comando padrão bash que espera receber comandos, como não tem comando ele termina a execução do container.

Se você executar esse comando:

docker run --name linux -d ubuntu

e depois esse:

docker ps -a

Você vai ver que seu container com nome de linux vai estar com status EXITED. (Conforme expliquei acima)

Justamente por isso que ao executar o comando:

docker exec -it linux bash

É gerado um erro, pois o container não está rodando.

Espero ter ajudado!

Entendi, mas como faço para startar o container? :(

Você pode rodar ele com o seguinte comando

docker run -it ubuntu

Então significa dizer que ele sempre vai ficar com o status " EXITED " ?

root@mestrado:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
483c7d488bd6        ubuntu              "/bin/bash"         2 minutes ago       Exited (0) About a minute ago                       linux
root@mestrado:~# docker run -it linux
Unable to find image 'linux:latest' locally
Pulling repository docker.io/library/linux
docker: Error: image library/linux:latest not found.
See 'docker run --help'.

Por que não consegui acessar?

Não, ao rodar com -it enquanto você estiver usando o container ele vai estar STARTED

Faça o seguinte teste, rode esse comando

docker run -it ubuntu

Abra outro terminal e execute

docker ps

Agora uma pergunta, por que você rodar o container do ubuntu em background?

root@mestrado:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
7851612c5728        ubuntu              "/bin/bash"         4 minutes ago       Up 4 minutes                            nauseous_panini

Tava indo no automatico o ubuntu em background, agora uma pergunta, se eu logar do terminal desse container, como faço para entrar novamente nele?

Você mata esse container e sobe um novo.

Containers devem ser efêmeros. Logo um container não deve guardar estado nenhum.

Então você sobe um container (no caso) do ubuntu, trabalha com o terminal dele e depois descarta. Quando você precisar de novo você cria um novo container.