不同的 os 是否需要不同的 Docker 容器

Is it necessary different Docker container for different os

我是 Docker 的新手。我对我的理解几乎没有怀疑。这是我的理解。

Docker 通过创建一个轻量级、独立的、可执行的应用程序包来解决这些问题,其中包含 运行 它所需的一切,包括代码、运行时间、库、工具、环境和配置

这是否意味着相同的容器映像会 运行 在不同的操作系统上?例如:

我希望下面的 Docker 文件可以创建容器映像,并且 运行 仅在 CENTOS 上。 如果我想 运行 我的应用程序不同 OS,那么我应该根据 OS 使用不同的 Docker 文件配置。在这种情况下,docker 容器的优势是什么?你能纠正我的理解吗?

FROM centos
ENV JAVA_VERSION 8u31
ENV BUILD_VERSION b13
# Upgrading system
RUN yum -y upgrade
RUN yum -y install wget
# Downloading & Config Java 8
RUN wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/$JAVA_VERSION-$BUILD_VERSION/jdk-$JAVA_VERSION-linux-x64.rpm" -O /tmp/jdk-8-linux-x64.rpm
RUN yum -y install /tmp/jdk-8-linux-x64.rpm
RUN alternatives --install /usr/bin/java jar /usr/java/latest/bin/java 200000
RUN alternatives --install /usr/bin/javaws javaws /usr/java/latest/bin/javaws 200000
RUN alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 200000
EXPOSE 8080
#install Spring Boot artifact
VOLUME /tmp
ADD /maven/sfg-thymeleaf-course-0.0.1-SNAPSHOT.jar sfg-thymeleaf-course.jar
RUN sh -c 'touch /sfg-thymeleaf-course.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/sfg-thymeleaf-course.jar"]

您刚刚提供的Docker文件将创建一个Docker 图像 可以 运行 在共享 Linux 内核的所有操作系统上,例如:Debian、Ubuntu、Centos、Fedora仅举几例。这是 Docker 的目的之一,能够在任何主机上 运行 与 运行 Linux 内核相同的映像。

但是,当您在 Docker 文件中指定 CentOs(FROM centos) 时,应用程序 运行ning 在 Docker 容器中 将使用 CentOS至于它的操作系统。