web-dev-qa-db-ja.com

Dockerコンテナーで実行されているubuntuのバージョンを確認する

Windows 8.1にDocker Toolboxがインストールされていて、ubuntu:latest(16.04である必要があります)に基づいてイメージを作成しています。私のアプリケーションが実際に16.04で実行されていることを確認したいと思います。ここに私の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/

イメージがビルドされたら、実行してみます。

docker run image uname -r

ただし、常に4.4.12 boot2docker

これで、boot2dockerが軽量のlinuxであることがわかりましたVM上で、Windowsでコンテナが回転していますが、イメージを実行してはいけないのは、実行しているubuntuのバージョンです。これを確認するにはどうすればよいですか?

18
user1411110

unameコマンドは、ホストで実行されているカーネルから仕様を取得しています。 DebianホストでUbuntuコンテナに入ると、unameはカーネルのDebianビルドで応答します。

実行しているUbuntuのバージョンを確認するには、

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

シェルスクリプトに適した単純な変数なので、実行できます

#!/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

これを試して

cat /etc/os-release

このように戻ります

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