Como se inicia um contentor Docker-ubuntu no bash?
as respostas desta pergunta não funcionam.
o contentor do ancoradouro sai sempre antes de eu poder {[[0]} ou não aceitar a bandeira -t
. Posso listar todos os comandos que tentei, mas é uma combinação de start
exec
attach
com várias bandeiras -it
e /bin/bash
.
edições:
Eu criei o contentor com docker run ubuntu
. A informação sobre o recipiente: 60b93bda690f ubuntu "/bin/bash" About an hour ago Exited (0) 50 minutes ago ecstatic_euclid
2 answers
docker attach
, docker exec
são alvo no contentor em execução.
Qual o processo que será iniciado quando o docker run
estiver configurado em Dockerfile
e incorporado na imagem do 'docker'. Veja a imagem ubuntu
como exemplo,
se executar docker inspect ubuntu
, irá encontrar os seguintes configuros no resultado:
"Cmd": ["/bin/bash"]
O que significa que o processo começou quando você corre docker run ubuntu
é /bin/bash
, mas você não está em um modo interativo e não aloca um por isso, o processo saiu imediatamente e o contentor saiu. É por isso que não tem como voltar a entrar no contentor.
Para iniciar um contentor e entrar bash
, basta tentar:
docker run -it ubuntu
Então você será trazido para a concha do contentor. Se abrir outro terminal e docker ps
, verá que o contentor está a correr e poderá docker attach
entrar nele ou docker exec -it <container_id> bash
entrar nele novamente.
Você também pode se referir a este link para mais informações.
Aqui está um ficheiro de Dockerfile muito simples com instruções como comentários ... dê uma volta e veja se você tem um contêiner de trabalho que você pode executar para
FROM ubuntu:16.04
ENV TERM linux
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
RUN apt-get install -y
CMD ["/bin/bash"]
# ... save this file as Dockerfile then in same dir issue following
#
# docker build --tag stens_ubuntu . # creates image stens_ubuntu
#
# docker run -d stens_ubuntu sleep infinity # launches container
#
# docker ps # show running containers
#
#
# ... find CONTAINER ID from above and put into something like this
#
# docker exec -ti 3cea1993ed28 bash # login to running container
#
Um contentor sai normalmente quando não tem trabalho a fazer ... se você não der nenhum trabalho ele sai imediatamente após o lançamento por esta razão ... normalmente, o último comando do seu ficheiro Dockerfile é a execução de algum sabor de um servidor que permanece vivo devido a um loop de eventos internos e, ao fazê-lo, mantém vivo o seu recipiente envolvente ... em suma, você pode mencionar um servidor excitável como o parâmetro final de sua chamada para
docker run -d my-image-name my-server-executible