对于这个问题的标题有些令人震惊,我深表歉意。
问题是由此引起的:我已经花了很多时间尝试在dotnet sdk里面安装 docker 镜像。
基本上,整个过程都在这个 Dockerfile 中“编码”:
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y wget
RUN wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
RUN dpkg -i packages-microsoft-prod.deb
RUN rm packages-microsoft-prod.deb
RUN apt-get update
RUN apt-get install -y apt-transport-https
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
RUN apt-get install -y dotnet-sdk-6.0
# dotnet sdk is installed!
STOPSIGNAL SIGQUIT
我用命令运行这个 dockerfile
docker build -t make_synchro_bot-image -f Dockerfile .
docker run -it --name make_synchro_bot-cont -d make_synchro_bot-image
然后我在容器内连接,
docker exec -it make_synchro_bot-cont /bin/bash
我有一个团队
dotnet --version他说...
The command could not be loaded, possibly because:
* You intended to execute a .NET application:
The application '--version' does not exist.
* You intended to execute a .NET SDK command:
No .NET SDKs were found.
Download a .NET SDK:
https://aka.ms/dotnet-download
Learn about SDK resolution:
https://aka.ms/dotnet/sdk-not-found
同时dotnet,dotnet --info-work,命令dotnet --list-sdks显示已安装SDK的空列表
(见附图)
所以我的问题是,这到底是什么意思?
我按照手册做所有事情
此外,这个问题会在特定的服务器上表现出来,而且幸运的是,它会出现在生产环境中。
我将 docker 的版本更新到了最新版本,尽我所能清理了缓存,删除了不必要的图像,docker images prune-做到了,重建了……结果是一样的!
原则上,我准备扔掉这个 dzhelo 并使用现成的 docker 镜像。我只是还不明白我将面临什么困难。我需要在容器内执行命令
dotnet publish
如果你给我关于如何做“同样的事情,但以不同的方式”的建议 - 我将不胜感激。
PS 来自领域的最新消息:我遇到了这样一个存储库,我正在坐着,正在学习......我试图了解我错在哪里。

我知道如何解决它,但我无法解释它为什么会起作用。
我按照您的说明构建了 docker,进入内部查看了已安装的软件包:
dotnet-sdk-6.0我对与其他软件包之间的版本不一致感到困惑。SDK版本6.0.400-1等包6.0.108-0ubuntu1~22.04.1我将 SDK 回滚到与其他软件包相同的版本 - 突然它起作用了:
在 Dockerfile 中指定特定的 SDK 版本。它看起来很丑,但它暂时有效。然后它将停止工作