【问题标题】:Installing packages into ubuntu14.04 docker container将软件包安装到 ubuntu14.04 docker 容器中
【发布时间】:2017-01-22 09:16:11
【问题描述】:

我目前正在为用于开发和生产的 virtualbox 和数字海洋构建类似的图像(他们正在使用 packer 和 ansible 来构建)。他们使用的是 Ubuntu 14.04。

我已经从相同的脚本创建了一个 docker 版本,没有任何问题。这将适用于 Gitlab CI 环境。

当我在容器中安装软件包时,我得到一个错误。可能与损坏的初始化系统有关?有什么不运行?

我的初始命令是 /sbin/init,我尝试过使用和不使用 phusion/base-image。

错误是msg: '/usr/bin/apt-get -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" install 'docker-engine'' failed: invoke-rc.d: unknown initscript, /etc/init.d/cgroup-lite not found. dpkg: error processing package cgroup-lite (--configure):

(是的,这将是一个整体容器,而不是单进程,是的,我正在从它内部运行 docker - 我将分享 docker.sock 来完成这项工作。) em>

【问题讨论】:

  • 您可能会发现this issue comment 很有用。还可以在 docker github repo 上查看这些问题线程(12)。
  • @EliranMalka 感谢您的链接。这些问题看起来很相似,但我认为我的问题可能更多是系统级配置,而不是 docker 依赖问题。除非我误解了?
  • 我对 docker 的了解还不够,无法回答。但逻辑假设(由于上述错误)是 docker 期望在安装 cgroup-lite 之前安装它。在加载 docker 之前尝试通过 apt-get 安装它。 (另外,人们说这是 ubuntu 14.x 版本的问题,因为 apt 源列表发生了变化 - 你可以尝试另一个(主要)版本进行快速 a/b 测试)
  • @EliranMalka 我已经进一步追踪并安装了cgroup-lite,但在配置为初始化脚本未正确复制到位时失败。

标签: docker ubuntu-14.04 init apt-get


【解决方案1】:

所以,我查看了invoke-rd.d 的代码并找到了这个相关的 sn-p。

# If we're running on upstart and there's an upstart job of this name, do
# the rest with upstart instead of calling the init script.
if which initctl >/dev/null && initctl version | grep -q upstart \
   && [ -e "$UPSTARTDIR/${INITSCRIPTID}.conf" ]
then
    is_upstart=1
elif test ! -f "${INITDPREFIX}${INITSCRIPTID}" ; then
    ## Verifies if the given initscript ID is known
    ## For sysvinit, this error is critical
    printerror unknown initscript, ${INITDPREFIX}${INITSCRIPTID} not found.
    if [ ! -e "$UPSTARTDIR/${INITSCRIPTID}.conf" ]; then
        # If the init script doesn't exist, but the upstart job does, we
        # defer the error exit; we might be running in a chroot and
        # policy-rc.d might say not to start the job anyway, in which case
        # we don't want to exit non-zero.
        exit 100
    fi
fi

docker 替换了 init 系统,无法在 ubuntu docker 容器中使用 upstart 以及为 upstart 构建的 cgroup-lite 的 ubuntu 包意味着 dpkg --configure 因无法启动服务而失败。

【讨论】:

    猜你喜欢
    • 2018-03-06
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多