J'ai Docker Toolbox installé sur Windows 8.1 et je crée une image basée sur ubuntu: latest (qui devrait être 16.04). Je veux m'assurer que mon application est bien exécutée le 16.04. Voici mon Dockerfile:
FROM ubuntu:latest
MAINTAINER xyz [email protected]
COPY apt.conf /etc/apt/
RUN apt-get -y update
RUN apt-get -y install cmake
RUN mkdir /usr/local/
COPY folder /usr/local/
RUN mkdir /usr/local/build
CMD cd /usr/local/build
CMD cmake /usr/local/
Une fois l'image construite, j'essaye de lancer:
docker run image uname -r
Mais il revient toujours avec 4.4.12 boot2docker
Maintenant, je sais que boot2docker est le linux léger VM au-dessus duquel les conteneurs sont tournés sur Windows, mais ne devrait pas exécuter l'image me donner la version d'ubuntu qu'elle fonctionne? Comment puis-je vérifier cela?
La commande uname
extrait les spécifications du noyau exécuté sur l'hôte. Si j'entre un conteneur Ubuntu sur mon hôte Debian, l'uname répondra avec une version Debian du noyau.
Pour connaître la version d'Ubuntu que vous utilisez, faites un
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
Ce sont des variables simples qui sont compatibles avec les scripts Shell, vous pouvez donc exécuter
#!/bin/sh
if [ ! -f /etc/lsb-release ]; then
echo "lsb-release missing, unlikely to be a Ubuntu system"
exit 1
fi
. /etc/lsb-release
if [ "$DISTRIB_ID" != "Ubuntu" -o "$DISTRIB_RELEASE" != "16.04" ]; then
echo "Linux install doesn't appear to be Ubuntu 16.04"
exit 1
fi
...
Essaye ça
cat /etc/os-release
Il reviendra comme ça
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial