ubuntu docker 镜像中的 python 安装挂在 python-pkg-resources

问题描述 投票:0回答:1

我正在尝试在 Ubuntu 基础上设置一个包含 Python 的容器。到目前为止都是基本的。 然而,这个命令对我来说永远挂在

Setting up python-pkgresources
。还有一个进程
/usr/bin/python2 /usr/bin/pycompile -p python-pkg-resources
正在磨一个CPU核心:

docker run -it docker.io/library/ubuntu:22.04 bash -c 'apt-get -y update && apt-get -y install  python-pkg-resources'
Unable to find image 'ubuntu:22.04' locally
22.04: Pulling from library/ubuntu
2ab09b027e7f: Pull complete
Digest: sha256:67211c14fa74f070d27cc59d69a7fa9aeff8e28ea118ef3babc295a0428a6d21
Status: Downloaded newer image for ubuntu:22.04
Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]
Get:7 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [909 kB]
Get:8 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [914 kB]
Get:9 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [23.2 kB]
Get:10 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [917 kB]
Get:11 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]
Get:12 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]
Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1257 kB]
Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [967 kB]
Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [28.6 kB]
Get:16 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1150 kB]
Get:17 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [23.3 kB]
Get:18 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [49.4 kB]
Fetched 26.5 MB in 22s (1203 kB/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libexpat1 libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib libreadline8 libsqlite3-0 media-types python2 python2-minimal python2.7 python2.7-minimal
  readline-common
Suggested packages:
  python-setuptools python2-doc python-tk python2.7-doc binutils binfmt-support readline-doc
The following NEW packages will be installed:
  libexpat1 libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib libreadline8 libsqlite3-0 media-types python-pkg-resources python2 python2-minimal python2.7
  python2.7-minimal readline-common
0 upgraded, 13 newly installed, 0 to remove and 2 not upgraded.
Need to get 5097 kB of archives.
After this operation, 19.5 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libpython2.7-minimal amd64 2.7.18-13ubuntu1.1 [347 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python2.7-minimal amd64 2.7.18-13ubuntu1.1 [1394 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy/universe amd64 python2-minimal amd64 2.7.18-3 [20.8 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 media-types all 7.0.0 [25.5 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libexpat1 amd64 2.4.7-1ubuntu0.2 [91.0 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 readline-common all 8.1.2-1 [53.5 kB]
Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 libreadline8 amd64 8.1.2-1 [153 kB]
Get:8 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsqlite3-0 amd64 3.37.2-2ubuntu0.1 [641 kB]
Get:9 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libpython2.7-stdlib amd64 2.7.18-13ubuntu1.1 [1977 kB]
Get:10 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python2.7 amd64 2.7.18-13ubuntu1.1 [250 kB]
Get:11 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpython2-stdlib amd64 2.7.18-3 [7432 B]
Get:12 http://archive.ubuntu.com/ubuntu jammy/universe amd64 python2 amd64 2.7.18-3 [9098 B]
Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python-pkg-resources all 44.1.1-1.2ubuntu0.22.04.1 [128 kB]
Fetched 5097 kB in 6s (818 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libpython2.7-minimal:amd64.
(Reading database ... 4395 files and directories currently installed.)
Preparing to unpack .../00-libpython2.7-minimal_2.7.18-13ubuntu1.1_amd64.deb ...
Unpacking libpython2.7-minimal:amd64 (2.7.18-13ubuntu1.1) ...
Selecting previously unselected package python2.7-minimal.
Preparing to unpack .../01-python2.7-minimal_2.7.18-13ubuntu1.1_amd64.deb ...
Unpacking python2.7-minimal (2.7.18-13ubuntu1.1) ...
Selecting previously unselected package python2-minimal.
Preparing to unpack .../02-python2-minimal_2.7.18-3_amd64.deb ...
Unpacking python2-minimal (2.7.18-3) ...
Selecting previously unselected package media-types.
Preparing to unpack .../03-media-types_7.0.0_all.deb ...
Unpacking media-types (7.0.0) ...
Selecting previously unselected package libexpat1:amd64.
Preparing to unpack .../04-libexpat1_2.4.7-1ubuntu0.2_amd64.deb ...
Unpacking libexpat1:amd64 (2.4.7-1ubuntu0.2) ...
Selecting previously unselected package readline-common.
Preparing to unpack .../05-readline-common_8.1.2-1_all.deb ...
Unpacking readline-common (8.1.2-1) ...
Selecting previously unselected package libreadline8:amd64.
Preparing to unpack .../06-libreadline8_8.1.2-1_amd64.deb ...
Unpacking libreadline8:amd64 (8.1.2-1) ...
Selecting previously unselected package libsqlite3-0:amd64.
Preparing to unpack .../07-libsqlite3-0_3.37.2-2ubuntu0.1_amd64.deb ...
Unpacking libsqlite3-0:amd64 (3.37.2-2ubuntu0.1) ...
Selecting previously unselected package libpython2.7-stdlib:amd64.
Preparing to unpack .../08-libpython2.7-stdlib_2.7.18-13ubuntu1.1_amd64.deb ...
Unpacking libpython2.7-stdlib:amd64 (2.7.18-13ubuntu1.1) ...
Selecting previously unselected package python2.7.
Preparing to unpack .../09-python2.7_2.7.18-13ubuntu1.1_amd64.deb ...
Unpacking python2.7 (2.7.18-13ubuntu1.1) ...
Selecting previously unselected package libpython2-stdlib:amd64.
Preparing to unpack .../10-libpython2-stdlib_2.7.18-3_amd64.deb ...
Unpacking libpython2-stdlib:amd64 (2.7.18-3) ...
Setting up libpython2.7-minimal:amd64 (2.7.18-13ubuntu1.1) ...
Setting up python2.7-minimal (2.7.18-13ubuntu1.1) ...
Linking and byte-compiling packages for runtime python2.7...
Setting up python2-minimal (2.7.18-3) ...
Selecting previously unselected package python2.
(Reading database ... 5184 files and directories currently installed.)
Preparing to unpack .../python2_2.7.18-3_amd64.deb ...
Unpacking python2 (2.7.18-3) ...
Selecting previously unselected package python-pkg-resources.
Preparing to unpack .../python-pkg-resources_44.1.1-1.2ubuntu0.22.04.1_all.deb ...
Unpacking python-pkg-resources (44.1.1-1.2ubuntu0.22.04.1) ...
Setting up libexpat1:amd64 (2.4.7-1ubuntu0.2) ...
Setting up media-types (7.0.0) ...
Setting up libsqlite3-0:amd64 (3.37.2-2ubuntu0.1) ...
Setting up readline-common (8.1.2-1) ...
Setting up libreadline8:amd64 (8.1.2-1) ...
Setting up libpython2.7-stdlib:amd64 (2.7.18-13ubuntu1.1) ...
Setting up python2.7 (2.7.18-13ubuntu1.1) ...
Setting up libpython2-stdlib:amd64 (2.7.18-3) ...
Setting up python2 (2.7.18-3) ...
Setting up python-pkg-resources (44.1.1-1.2ubuntu0.22.04.1) ...

我尝试了不同的 ubuntu 和 debian 版本、不同的存储后端、重新启动和删除

/var/lib/docker
但没有效果。同样的命令也适用于我的一些同事,但适用于其他一些机器,对我来说没有明显的模式。我错过了什么明显的事情?

我很难相信这是一个普遍的 docker/ubuntu 问题。同一个镜像愉快地构建了最长的时间,所以我的 docker 安装发生变化的可能性很高。这是我的

docker info
供参考:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.10.4
    Path:     ~/.docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  2.17.2
    Path:     /usr/lib/docker/cli-plugins/docker-compose

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 1
 Server Version: 23.0.3
 Storage Driver: overlay2
  Backing Filesystem: btrfs
  Supports d_type: true
  Using metacopy: true
  Native Overlay Diff: false
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 31aa4358a36870b21a992d3ad2bef29e1d693bec.m
 runc version:
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.15.94-1-MANJARO
 Operating System: Manjaro Linux
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 15.14GiB
 Name: werkzeug
 ID: PUZO:S6ZB:JI3Q:BBCI:X3UH:673F:HNHY:DOHB:CDMK:NBDN:W5J2:JUA3
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
python linux docker ubuntu apt
1个回答
0
投票

我也遇到了同样的问题,花了几天时间寻找解决方案。最后我发现了这个:https://github.com/MaastrichtUniversity/docker-dev/commit/97ab4fd04534f73c023371b07e188918b73ac9d0

这是 python 无法处理大量打开文件或类似问题的问题:)

解决方法(我不会称其为真正的解决方案)非常简单 - 您必须限制容器允许的最大打开文件数。

所以...如果你用简单的

docker run
启动一个容器,你必须使用:

docker run --ulimit nofile=1048576:1048576 ...

如果您使用 docker-compose,请添加:

ulimits:
    nofile:
      soft: "1048576"
      hard: "1048576"
© www.soinside.com 2019 - 2024. All rights reserved.