Ubuntu용 Docker 컨테이너 이미지 파일을 선택할 때 파일 간에 일치해야 하는 것은 무엇입니까?

Ubuntu용 Docker 컨테이너 이미지 파일을 선택할 때 파일 간에 일치해야 하는 것은 무엇입니까?

Ubuntu용 Docker 컨테이너 이미지 파일을 선택할 때 Ubuntu에서 실행될 수 있도록 파일 간에 무엇을 일치시켜야 합니까?

Unix(MacOS, OpenBSD)가 아닌 Linux용 이미지 파일을 선택해야 합니까?

Linux 배포판(Ubuntu, Centos 등)과 일치해야 합니까, 아니면 Linux 커널만 일치해야 합니까?

Linux 커널 버전과 일치해야 합니까?

감사해요.

답변1

운영 체제만 일치해야 합니다.

Linux에서 실행되는 Docker는 모든 Linux 컨테이너를 실행할 수 있지만 Windows 컨테이너 또는 *BSD 컨테이너(존재하는 경우)는 실행할 수 없습니다.

기본적으로 Windows에서 실행되는 Docker는 모든 Windows 컨테이너를 실행할 수 있지만 Linux 컨테이너는 실행할 수 없습니다.

Windows 하이퍼바이저의 Linux 가상 머신에서 실행되는 Docker는 모든 Linux 컨테이너를 실행할 수 있지만 Windows 컨테이너는 실행할 수 없습니다.

답변2

컨테이너는 네트워크 및 파일 시스템 "버블"에서 실행되는 프로세스일 뿐입니다. 호스트의 파일에 의존하지 않습니다. 따라서 컨테이너 이미지는 호스트 유형(Linux의 Linux 등)과만 일치하면 됩니다. 저는 RHEL과 Centos에서 Debian 기반 컨테이너를 실행하고 Ubuntu에서 Centos 컨테이너를 실행합니다.

컨테이너 이미지의 "릴리스" 버전은 다음과 같은 경우에만 관련됩니다.

  • Dockerfile( 등...)에 더 많은 소프트웨어를 설치 apt install합니다 yum install.
  • 구성 파일이 다른 위치(예: 보안 인증서)에 위치할 수 있는 특정 시스템 수준 조정을 수행할 수 있습니다.
  • 특정 라이브러리에 의존하는 소프트웨어를 추가합니다(예: Alpine 기반 컨테이너 이미지는 그렇지 않으므로 glibc일반 Linux 애플리케이션에는 특정 컴파일이 필요하거나 glib를 추가해야 함)
  • 실행 중인 컨테이너( )에서 일부 수동 유지 관리/디버깅을 수행하고 있는데 docker exec..., 이 경우 즐겨 사용하는 도구를 갖는 것이 도움이 됩니다.

...그러나 이는 대부분 편의를 위한 것이며 호환성 문제는 아닙니다.

여러 개의 서로 다른 이미지가 있는 경우 동일한 기본 배포 이미지에서 이미지를 포크하여 docker가 이미지 간에 공통 기반을 공유할 수 있도록 하는 것이 유용할 수 있습니다(파일 시스템 요구 사항 감소...).

이론적으로 컨테이너의 애플리케이션은 최소 커널 버전이 필요한 호스트의 시스템 호출에 의존할 수 있지만 실제로는 매우 드뭅니다.

관련 정보