Para iniciar um shell interativo para a imagem do Ubuntu, podemos executar:
ole@T:~$ docker run -it --rm ubuntu
root@1a6721e1fb64:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Mas quando isso é executado para a imagem do Alpine Docker , os seguintes resultados:
ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified
Qual é o comando para iniciar um shell interativo em um contêiner base Alpine?
linux
docker
containers
alpine
Ole
fonte
fonte
-d
opção.ash
e nãobash
, o que, por não estar muito familiarizado com a Alpine, foi o que me pegou e me impediu de acessar o contêiner mais cedo.Normalmente, uma imagem Alpine Linux não contém
bash
, Em vez disso você pode usar/bin/ash
,/bin/sh
,ash
ou únicash
./ bin / ash
/ bin / sh
cinza
sh
Espero que esta informação o ajude.
fonte
/bin/ash
eash
? Semelhante para/bin/sh
esh
.ash
é apenas um link simbólico para/bin/ash
. Algumas distribuições linux não possuem links simbólicos.Atualmente, as imagens do Alpine são inicializadas diretamente
/bin/sh
por padrão, sem a necessidade de especificar um shell para executar:Isto é porque os
alpine
Dockerfiles imagem agora contêm umCMD
comando, que especifica o shell para executar quando o recipiente começa:CMD ["/bin/sh"]
.Nas versões mais antigas da imagem Alpine (antes de 2017), o comando CMD não era usado, pois o Docker criava uma camada adicional para o CMD, o que fazia com que o tamanho da imagem aumentasse. Isso é algo que os desenvolvedores de imagens da Alpine queriam evitar. Nas versões recentes do Docker (1.10 ou superior), o CMD não ocupa mais uma camada e foi adicionado às
alpine
imagens. Portanto, desde que o CMD não seja substituído, imagens alpinas recentes serão inicializadas/bin/sh
.Para referência, consulte o seguinte commit dos Alpine Dockerfiles da Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578b4900
fonte
Caso o contêiner já esteja em execução:
fonte