Most of the time, using one of these two, I can tell which OS is running in my Docker container (alpine, centOS, etc)

But this time, I can't tell:

bash-4.2$ uname -a       
Linux 6fe5c6d1451c 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

bash-4.2$ more /etc/issue
\S
Kernel \r on an \m

Any way to get a text version of the OS it is running ?

up vote 11 down vote accepted

I like to use Screenfetch. You might want to try that.

If you look into the code you can see how it determines the distribution:

  • lsb_release -sirc
  • cat /etc/os-release

And to cover CentOS too:

  • cat /etc/issue
  • 1
    "/etc/os-release" is indeed a good source, but is not present on some centOS. If you have only one shot to decide, I would say: "ls /etc/*release". But if one need the string way, you need both "cat /etc/os-release" and "cat /etc/issue" to cover all cases. Thank you both of you. – Bob Yoplait Sep 26 '16 at 21:02

uname will tell you the kernel that's running, which is the host OS kernel (containers, unlike VM's, share the same kernel).

To identify the base image of the container, there's no guaranteed solution from inside the container. You can look for pointers from the major vendors like Janosch gives (/etc/os-release for most vendors like Debian, CentOS and Alpine, or /etc/lsb-release for Ubuntu). You can also check the package management tools if they are installed (/etc/apk, /etc/apt, /etc/yum).

Outside of the container, you can inspect the image and track down the layers to see where the image comes from, but that gets into locating sha256 checksums. The best method is to review the Dockerfile that was used the build the image.

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.