En général, les gens utilisent l'image officielle d'Ubuntu/CentOS, mais ils ne réalisent pas que ces images sont minimales et qu'il n'y a rien par-dessus.
Pour Ubuntu, cette image est construite à partir des tarballs officiels de rootfs fournis par Canonical. Étant donné qu'il s'agit d'une installation minimale d'Ubuntu, cette image n'inclut par défaut que les locales C, C.UTF-8 et POSIX.
On peut installer net-tools (comprend ifconfig, netstat), ip-utils (comprend ping) et d'autres comme curl etc. sur le conteneur et créer une image à partir du conteneur ou écrire un Dockerfile qui installera ces outils lors de la création de l'image.
Voici un exemple de Dockerfile, en créant l'image à partir de celui-ci, il inclura ces outils :
FROM vkitpro/ubuntu16.04
RUN apt-get update -y \
&& apt-get upgrade -y \
&& apt-get install iputils-ping -y \
&& apt-get install net-tools -y \
CMD bash
ou lancer le conteneur à partir de l'image de base et installer ces utilitaires sur le conteneur puis faire un commit sur l'image. docker commit -m "tout message descriptif" container_id image_name:lattest
Cette image aura tout installé.
13 votes
Il est tout à fait approprié qu'une image Docker soit minimale. Dans la plupart des cas, un conteneur ne fera jamais rien d'autre que d'exécuter une seule application - pourquoi installer quelque chose dont cette application n'a pas besoin ?
6 votes
Si vous souhaitez simplement exécuter des diagnostics, il peut être plus simple d'exécuter busybox (dont l'image inclut ping), par exemple : docker run -it --rm busybox ping my-server.