gpt4 book ai didi

docker - ubuntu docker容器中的可用软件包版本根据主机操作系统而变化

转载 作者:行者123 更新时间:2023-12-02 19:11:15 25 4
gpt4 key购买 nike

我在基于ubuntu的Docker容器中固定python和nodejs的版本时遇到问题。

我遇到困难的原因是,容器中可用的软件包版本会根据主机而变化。

我想通过添加以下命令在Dockerfile中指定python和nodejs debian软件包的版本:

RUN apt-get -y install "python=2.7.5-5ubuntu3" build-essential "nodejs=6.1.0-1nodesource1~trusty1" vim jq

我通过在OSX el-capitan笔记本电脑上本地运行的ubuntu容器中运行一些 apt-cache madison命令来确定这些版本字符串。一切正常。当我尝试在Amazon Linux实例上运行的CI环境中构建同一容器时,它失败了,因为命名版本不可用。

这是一些输出,确切显示正在发生的事情。

OSX El Capitan(通过docker-machine VBOX包装器)
$ uname -a

Darwin Kyles-MacBook-Pro.local 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64

$ # now get into the container
$ docker exec -it named_container bash
root@79a839297d7e:/src# apt-cache madison nodejs

nodejs | 6.1.0-1nodesource1~trusty1 | https://deb.nodesource.com/node_6.x/ trusty/main amd64 Packages
nodejs | 0.10.25~dfsg2-2ubuntu1 | http://archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
nodejs | 0.10.25~dfsg2-2ubuntu1 | http://archive.ubuntu.com/ubuntu/ trusty/universe Sources
nodejs | 6.1.0-1nodesource1~trusty1 | https://deb.nodesource.com/node_6.x/ trusty/main Sources

root@79a839297d7e:/src# apt-cache madison python

python | 2.7.5-5ubuntu3 | http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
python-defaults | 2.7.5-5ubuntu3 | http://archive.ubuntu.com/ubuntu/ trusty/main Sources

CI环境中的序列相同-在AMI Linux上:
$ uname -a

Linux ip-10-250-160-248 4.4.8-20.46.amzn1.x86_64 #1 SMP Wed Apr 27 19:28:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ # now get into the container
$ docker exec -it named_container bash
root@8344a5f311fe:/src# apt-cache madison nodejs

nodejs | 6.1.0-1nodesource1~xenial1 | https://deb.nodesource.com/node_6.x xenial/main amd64 Packages
nodejs | 4.2.6~dfsg-1ubuntu4 | http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
nodejs | 4.2.6~dfsg-1ubuntu4 | http://archive.ubuntu.com/ubuntu xenial/universe Sources
nodejs | 6.1.0-1nodesource1~xenial1 | https://deb.nodesource.com/node_6.x xenial/main Sources

$ root@8344a5f311fe:/src# apt-cache madison python

python | 2.7.11-1 | http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
python-defaults | 2.7.11-1 | http://archive.ubuntu.com/ubuntu xenial/main Sources

这是Dockerfile的开始,我更改了ENTRYPOINT和CMD,因为它们与该问题无关
FROM ubuntu

MAINTAINER Kyle Zeeuwen

RUN apt-get update
RUN apt-get -y install curl
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get -y install "python=2.7.5-5ubuntu3" build-essential "nodejs=6.1.0-1nodesource1~trusty1" vim jq

CMD ["sleep", "3600"]

所以我的问题是:
  • 我需要更改什么才能可靠地设置python和nodejs版本,以便docker容器构建可以在包括OSX和Linux AMI在内的各种主机环境中工作
  • 这将使Ubuntu报告不同的发行版是怎么回事?
  • 最佳答案

    版本不匹配有两个可能的原因:

  • 基本镜像版本:基本镜像不是其中一台计算机上的最新镜像。确保在构建之前运行docker pull ubuntu,或使用其他--pull标志进行构建。
  • Docker缓存:apt-get update步骤已缓存,一台计算机上的缓存比另一台计算机上的缓存更旧。永远不要在没有任何其他命令的情况下运行apt-get update,因为缓存永远不会失效。相反,请执行RUN apt-get update && apt-get -y install curl。您也可以运行docker build --no-cache以确保您不使用任何缓存。

  • 简而言之: docker build --pull --no-cache应该可以解决您的问题,但是您还应该按照上述说明调整Dockerfile。

    关于docker - ubuntu docker容器中的可用软件包版本根据主机操作系统而变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37154493/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com