首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Ubuntu挑选错误的目录

Docker Ubuntu挑选错误的目录
EN

Stack Overflow用户
提问于 2020-07-24 03:37:02
回答 1查看 435关注 0票数 0

我是Docker的新手,并试图通过尝试在其中运行Steam服务器来熟悉自己。

我的Dockerfile如下:

代码语言:javascript
复制
FROM ubuntu:20.10

RUN dpkg --add-architecture i386 \ 
    && apt-get update \
    && apt-get install -y \
    curl \
    ca-certificates \
    libgcc1 \
    && apt-get clean autoclean \
    && apt-get autoremove -y \
    && rm -rf /var/lib/apt/lists/*

RUN mkdir -p steam/cmd \
    && cd steam \
    && curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - -C cmd

RUN ./steam/cmd/steamcmd.sh +quit

我不明白为什么最后一步会抛出这个错误:

代码语言:javascript
复制
Step 4/4 : RUN ./steam/cmd/steamcmd.sh +quit
 ---> Running in c3f673328fe6
./steam/cmd/steamcmd.sh: line 37: /steam/cmd/linux32/steamcmd: No such file or directory
The command '/bin/sh -c ./steam/cmd/steamcmd.sh +quit' returned a non-zero code: 127

为什么./steam/cmd/steamcmd.sh会被翻译成/steam/cmd/linux32/steamcmd

步骤3/3不是将steamcmd.sh放在linux32中。

代码语言:javascript
复制
Step 3/4 : RUN mkdir -p steam/cmd     && cd steam     && curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - -C cmd
 ---> Running in fa5dcd1fcadc
steamcmd.sh
linux32/steamcmd
linux32/steamerrorreporter
linux32/libstdc++.so.6
linux32/crashhandler.so

使用WORKDIR steam/cmd,然后使用RUN也会返回相同的结果。

EN

回答 1

Stack Overflow用户

发布于 2020-07-24 04:45:43

查看此讨论:https://askubuntu.com/questions/133389/no-such-file-or-directory-but-the-file-exists

尝试将apt install libc6-i386作为步骤2的一部分。

代码语言:javascript
复制
RUN dpkg --add-architecture i386 \ 
    && apt-get update \
    && apt-get install -y \
    curl \
    ca-certificates \
    libgcc1 \
    libc6-i386 \
    && apt-get clean autoclean \
    && apt-get autoremove -y \
    && rm -rf /var/lib/apt/lists/*

而且jfyi,sh文件并没有像你想的那样被“翻译”。

如果您实际打开该sh,您将看到它试图调用linux32可执行文件(它称为$STEAMEXE)。

如果你想自己解决这样的问题,下面是我调查的方法:

  1. 我复制了你的looked文件,但注释/删除了最后一步(损坏的)。
  2. 我用docker build -t helpthiscoder .
  3. I在镜像上建立了镜像,docker start helpthiscoder; docker run -i -t helpthiscoder bash
  4. I在镜像上查看了sh文件的内部。对于这个文件,我添加了我自己的echo $STEAMEXE来查看路径是/steam/cmd/linux32/steamcmd.
  5. I,转到/steam/cmd/linux32并运行ls -lah来查看该文件是否存在,而executable.
  6. I运行file steamcmd来获取信息。然后我发现它是32位的。
  7. ,然后我在谷歌上搜索了linux 32-bit file not found error Ubuntu 20,找到了我在第一段中提到的链接。:/

不过,我现在得到了一个不同的错误:

代码语言:javascript
复制
Redirecting stderr to '/root/Steam/logs/stderr.txt'
threadtools.cpp (3787) : Assertion Failed: Probably deadlock or failure waiting for thread to initialize.
ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".
[  0%] Checking for available update...
threadtools.cpp (3787) : Assertion Failed: Probably deadlock or failure waiting for thread to initialize.
Thread failed to initialize
CWorkThreadPool::StartWorkThread: Thread creation failed.
Exiting on SPEW_ABORT

我会继续调查的。我强烈建议你删除你的最后一条断线,并构建一个你可以用我上面提到的方式“探索”的图像。这就是我得到这个新错误的方式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63061908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档