我想构建freebsd docker镜像,因为基准测试表明,它具有更低的延迟,更好地组织网络堆栈,我想在我的应用程序中使用它。所以我有以下docker文件
考虑Dockerfile:
FROM alpine:latest
RUN echo $(uname -a)
CMD [echo]sudo docker build .会打印内核版本
如果我将Dockerfile更改为另一个
FROM lexaguskov/freebsd:latest
RUN echo $(uname -a)
CMD [echo]它不工作,打印一个错误:
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM lexaguskov/freebsd:latest
latest: Pulling from lexaguskov/freebsd
Image docker.io/lexaguskov/freebsd:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
9503d02123d7: Pull complete
operating system is not supported那么docker pull命令运行不正常,该如何修复呢?如果linux不支持运行基于freebsd的镜像,那么至少它必须允许我使用docker image inspect进行反向操作,但我甚至不能检查。docker pull有什么问题?我认为它行为不端
发布于 2021-09-26 22:59:56
容器不提供内核,它们只是在主机内核下使用一些隔离设置运行一个进程。如果你想运行一个内核,你应该运行一个VM而不是一个容器。
您尝试运行的特定映像是在2015年构建的,使用了一个过时的模式,并且已将OS/体系结构设置为freebsd/amd64而不是linux/amd64。假设您的docker引擎在Linux上(您可以使用docker info进行验证),它将正确地拒绝运行此镜像。问题不在于docker不能拉出图像,它确实被拉到了构建器中。更确切地说,镜像可能包含不能在内核上运行的二进制文件,就像试图在Linux主机上运行Windows exe一样,因此docker拒绝使用它。
似乎有一个port of Docker to Freebsd,但那个doesn't appear to be working已经有好几年了。您可能能够运行较旧的docker安装,但预计会出现问题和安全漏洞,并且不会与Linux上的docker进行同类比较。为此,您首先需要安装Freebsd (例如,在虚拟机上),这很可能与在您的情况下运行docker容器的目的不符。
https://stackoverflow.com/questions/69336935
复制相似问题