Eu tenho um contêiner Docker executando o Ubuntu, que fiz da seguinte maneira:
docker run -it ubuntu /bin/bash
no entanto, parece não ter ping
. Por exemplo
bash: ping: command not found
Preciso instalar isso?
Parece estar faltando um comando bastante básico. Eu tentei o whereis ping
que não informa nada.
Respostas:
As imagens do Docker são mínimas, mas você pode instalar
ping
na sua imagem oficial do ubuntu via:Provavelmente, você não precisa da
ping
sua imagem e só quer usá-la para fins de teste. O exemplo acima irá ajudá-lo.Mas se você precisar que o ping exista na sua imagem, poderá criar um
Dockerfile
oucommit
o contêiner em que os comandos acima foram executados para uma nova imagem.Confirmar:
Dockerfile:
Observe que existem práticas recomendadas para criar imagens de janela de encaixe, como limpar arquivos de cache apt após e etc.
fonte
Temporary failure resolving 'security.ubuntu.com'
obviamente porque a rede não está presente.Esta é a página Docker Hub para o Ubuntu e esta é a forma como ele é criado. Ele possui apenas um pouco (mínimo) de pacotes mínimos instalados; portanto, se você precisar de algo extra, precisará instalá-lo.
No entanto, geralmente você cria um "Dockerfile" e o compila:
Por favor, use o Google para encontrar tutoriais e Dockerfiles existentes em Procurar para ver como eles costumam fazer coisas :) Para o tamanho exemplo de imagem deve ser minimizado através da execução
apt-get clean && rm -rf /var/lib/apt/lists/*
apósapt-get install
comandos.fonte
echo -e
na verdade desafia o padrão POSIX sh , que não permite que ele faça nada além de imprimir-e
em sua saída. (Mesmo com algumas versões do bash, esse é o comportamento padrão). Useprintf
::printf '%s\n' "FROM ubuntu" "RUN apt-get update && apt-get install -y iputils-ping" "CMD bash"
e consulte a seção USO DO APLICATIVO do documento de normas vinculado acima.echo -e
da maneira que você espera (mas, em vez disso, terá um comportamento compatível com os padrões) quando estiver no modo POSIX compilado--enable-xpg-echo-default
ou com variáveis de ambiente apropriadas ou outra configuração de tempo de execução.-n
como primeiro argumento ou quando houver literais de barra invertida - mas mesmo assim, é definido pela implementação , não é garantido por padrão, portanto o comportamento depende do shell individual em uso).Geralmente, as pessoas puxam a imagem oficial do Ubuntu / CentOS, mas não percebem que essas imagens são mínimas e não têm nada além disso.
Para o Ubuntu, esta imagem foi criada a partir de tarballs rootfs oficiais fornecidos pela Canonical. Dado que é uma instalação mínima do Ubuntu, esta imagem inclui apenas os códigos de idioma C, C.UTF-8 e POSIX por padrão.
Pode-se instalar o net-tools (inclui ifconfig, netstat), ip-utils (inclui ping) e outros curtimentos, etc. enrolam-se no contêiner e podem criar imagens a partir do contêiner ou escrever Dockerfile que instalará essas ferramentas ao criar a imagem.
Abaixo está um exemplo do Dockerfile, ao criar uma imagem a partir disso, ele incluirá estas ferramentas:
ou inicie o contêiner a partir da imagem base e instale esses utilitários no contêiner e depois confirme a imagem. docker commit -m "qualquer mensagem descritiva" container_id image_name: lattest
Essa imagem terá tudo instalado.
fonte
Como alternativa, você pode usar uma imagem do Docker que já possui ping instalado, por exemplo, busybox :
fonte
apt-get iputils-ping
a imagem que precisa.Toda vez que você receber esse tipo de erro
Em um host com esse comando já trabalhando com esta solução :
Não tem um host com esse pacote instalado? Tente o seguinte :
fonte
Às vezes, a instalação mínima do Linux no Docker não define o caminho e, portanto, é necessário chamar o ping usando ....
fonte
Eu usei a instrução abaixo no debian 10
fonte