web-dev-qa-db-fra.com

Vérifier la version d'ubuntu s'exécutant dans un conteneur Docker

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?

18
user1411110

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
...
16
BMitch

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
9
Bluethon