【问题标题】:How to add service to docker container?如何向 docker 容器添加服务?
【发布时间】:2021-08-20 10:23:22
【问题描述】:

是否可以为特定的 docker 层安装附加功能?在实践中,我想为 asp.net 核心应用程序启动的脚本添加从终端处理 ssh 的能力。在普通的非 docker 环境中,这可以正常工作。

MyDockerFile:

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["LinuxConsoleApp/LinuxConsoleApp.csproj", "LinuxConsoleApp/"]
COPY . ./
WORKDIR "/src/LinuxConsoleApp"
RUN dotnet build "LinuxConsoleApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "LinuxConsoleApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app

##instaling additional service, in my case ssh-client
RUN apt-get update && apt-get install -y openssh-client
##changing permissions
RUN mkdir -p /root/.ssh && \
  chmod 0700 /root/.ssh 

###unsafe coping private key to container - i know 
COPY id_rsa /root/.ssh/id_rsa

WORKDIR /app/

###here ssh can connect from docker to localhost during build time
RUN ssh -o StrictHostKeyChecking=no troom@192.168.0.200

COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "LinuxConsoleApp.dll"]
COPY LinuxConsoleApp/data /app/scripts

当我尝试从 asp.net 核心容器运行脚本时,我收到消息:

/app/scripts/Import.sh: 1: /app/scripts/Import.sh: ssh: not found

Import.sh 是我的脚本,其中包含:

ssh -o StrictHostKeyChecking=no troom@192.168.0.200

如您所见,它安装了 ssh 客户端,但我不明白为什么它在 asp.net 核心应用程序中不可用

【问题讨论】:

  • 它可能只是在构建期间正确设置但在运行时没有正确设置的 PATH 环境变量。你能把脚本改成/usr/bin/ssh,而不仅仅是ssh吗?
  • @HansKilian 我试过了,不幸的是它没有帮助。目前我收到“/usr/bin/ssh: not found”错误。
  • 如何运行脚本?从代码?看起来怎么样?
  • 我使用 Process start from code。这是代码pastebin.com/Apik56d7
  • @HansKilian 感谢您的帮助。根据我给自己的答案解决了问题。

标签: linux docker ssh dockerfile


【解决方案1】:

问题的解决方案并不明显,至少对我来说是这样。

长篇大论: UTF-8 物料清单 https://www.w3.org/International/questions/qa-byte-order-mark

小故事: 我的 ssh 文件格式包含不可见字符。因此,创建一个新文件并复制其中的内容(在我的情况下为 ssh -o StrictHostKeyChecking=no troom@192.168.0.200)就足够了,一切都开始正常工作了。

综上所述,上面的dockerfile是正确的,可以放心使用。问题出在脚本文件上。

【讨论】:

    猜你喜欢
    • 2019-12-16
    • 2019-08-23
    • 2020-05-25
    • 1970-01-01
    • 2018-04-06
    • 2019-03-28
    • 2020-09-19
    • 2018-03-14
    • 1970-01-01
    相关资源
    最近更新 更多