Docker 컨테이너에서 어떤 OS가 실행되고 있습니까?


20

대부분이 두 가지 중 하나를 사용하여 Docker 컨테이너에서 실행중인 OS (알파인, centOS 등)를 알 수 있습니다

그러나 이번에는 말할 수 없습니다.

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

운영 체제의 텍스트 버전을 얻는 방법은 무엇입니까?

답변:


31

Screenfetch 사용하고 싶습니다 . 시도해 볼 수 있습니다.

코드를 살펴보면 배포판이 어떻게 결정되는지 확인할 수 있습니다.

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

그리고 CentOS도 다루기 위해 :

  • cat /etc/issue

1
"/ etc / os-release"는 실제로 좋은 소스이지만 일부 centOS에는 없습니다. 결정할 샷이 하나 뿐인 경우 "ls / etc / * release"라고 말합니다. 그러나 문자열 방식이 필요한 경우 모든 경우를 다루기 위해 "cat / etc / os-release"및 "cat / etc / issue"가 모두 필요합니다. 둘 다 고마워
Bob Yoplait

그래 고산에 그들은 둘 다 작업 cat /etc/issue하고 cat /etc/alpine-release!
율리우스

7

uname 호스트 OS 커널 인 VM이 실행중인 커널을 알려줍니다 (VM과 달리 컨테이너는 동일한 커널을 공유 함).

컨테이너의 기본 이미지를 식별하기 위해 컨테이너 내부에서 보장 된 솔루션이 없습니다. Janosch가 제공하는 주요 공급 업체 (Debian, CentOS 및 Alpine과 같은 대부분의 공급 업체의 경우 / etc / os-release) 또는 우분투의 경우 / etc / lsb-release)에서 포인터를 찾을 수 있습니다. 패키지 관리 도구가 설치되어 있는지 확인할 수도 있습니다 (/ etc / apk, / etc / apt, / etc / yum).

컨테이너 외부에서 이미지를 검사하고 레이어를 추적하여 이미지가 어디에서 왔는지 확인할 수 있지만 sha256 체크섬을 찾습니다. 가장 좋은 방법은 이미지 빌드에 사용 된 Dockerfile을 검토하는 것입니다.


오늘 현재 최신 우분투 이미지가있는 창에서 이것을 실행하면 uname그냥 반환 Linux하고 uname -a그냥 반환합니다.Linux 89e9cd67fc7a 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
David Culbreth

1
Linuxkit은 내장 Docker VM이며, 컨테이너는 Docker for Windows에서 실행되는 호스트 OS입니다.
BMitch

"uname"은 컨테이너가 아닌 기본 호스트에 대한 세부 정보를 제공합니다 (컨테이너 내에서 실행하더라도).
Trondh

@Trondh 나는 그것이 내가 말한 것이라고 믿는다. 답변에 수정해야 할 것이 있습니까?
BMitch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.