【问题标题】:Unable to locate package apt-get in docker container无法在 docker 容器中找到包 apt-get
【发布时间】:2016-11-21 12:01:45
【问题描述】:

我正在尝试在 docker 中创建一个容器;它通常工作得很好,但我突然遇到了一个我知道如何解决的问题。

FROM ubuntu:14.04

RUN apt-get update && \
    apt-get upgrade -y \
    apt-get install -y openssh-server && \
    mkdir /var/run/sshd

RUN echo root:root | chpasswd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

当它到达 apt-get update 时,它​​会抛出以下错误:

  • E: 无法定位软件包 apt-get
  • E: 无法找到软件包安装

如果图像基于标准 ubuntu 14.04,这怎么可能?

【问题讨论】:

  • 尝试运行 sudo apt-get update
  • 你的 Dockerfile 中缺少 2 &&
  • Sudo 确实是问题所在。不知道这是必需的。谢谢@charantej
  • Sudo 用于授予管理员权限。它对你有用吗?
  • 是的;我知道 sudo 用于管理员权限,但我有点希望 dockercontainer 中的默认用户能够使用 apt-get。不过谢谢:)

标签: docker ubuntu-14.04


【解决方案1】:

您没有以&& 结束您的 apt-get upgrade 命令,因此它尝试在下一行安装“包”。我喜欢将&& 放在每一行的开头,因为我更容易看到这种情况何时发生(并且使复制/粘贴更容易一些):

FROM ubuntu:14.04

RUN apt-get update \
 && apt-get upgrade -y \
 && apt-get install -y \
      openssh-server \
 && mkdir /var/run/sshd

RUN echo root:root | chpasswd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

【讨论】:

  • 感谢您的回答。我的问题现在感觉就像我有史以来最大的脑残。
【解决方案2】:

这行得通。

FROM ubuntu
RUN apt-get update  -y
RUN apt-get upgrade -y
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd

RUN echo root:root | chpasswd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

【讨论】:

  • 这只工作一次,然后几个月后更新值将保持缓存,对 Dockerfile 的更改可能会导致意外错误。请参阅 the best practices 了解为什么不建议这样做。
  • @BMitch 谢谢,不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多