我正在尝试在 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
我也遇到了同样的问题,花了几天时间寻找解决方案。最后我发现了这个: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"