注意: 这是 perl镜像 的 mips64le 架构构建的“每个架构”仓库——更多信息,请参见镜像文档中的“除amd64之外的架构?”在镜像文档中 以及镜像FAQ中的“镜像源在Git中更改了,现在该怎么办?”在***镜像FAQ中。
维护者:
Perl社区
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux 或 Stack Overflow
Dockerfile 链接5.42.0-bookworm, 5.42-bookworm, 5-bookworm, bookworm, stable-bookworm
5.42.0-slim-bookworm, 5.42-slim-bookworm, 5-slim-bookworm, slim-bookworm, stable-slim-bookworm
5.42.0-threaded-bookworm, 5.42-threaded-bookworm, 5-threaded-bookworm, threaded-bookworm, stable-threaded-bookworm
5.42.0-slim-threaded-bookworm, 5.42-slim-threaded-bookworm, 5-slim-threaded-bookworm, slim-threaded-bookworm, stable-slim-threaded-bookworm
5.40.3-bookworm, 5.40-bookworm
5.40.3-slim-bookworm, 5.40-slim-bookworm
5.40.3-threaded-bookworm, 5.40-threaded-bookworm
5.40.3-slim-threaded-bookworm, 5.40-slim-threaded-bookworm
5.38.5-bookworm, 5.38-bookworm
5.38.5-slim-bookworm, 5.38-slim-bookworm
5.38.5-threaded-bookworm, 5.38-threaded-bookworm
5.38.5-slim-threaded-bookworm, 5.38-slim-threaded-bookworm
5.43.2-bookworm, 5.43-bookworm, devel-bookworm
5.43.2-slim-bookworm, 5.43-slim-bookworm, devel-slim-bookworm
5.43.2-threaded-bookworm, 5.43-threaded-bookworm, devel-threaded-bookworm
5.43.2-slim-threaded-bookworm, 5.43-slim-threaded-bookworm, devel-slim-threaded-bookworm
提交issues的地方:
[***]
支持的架构: (更多信息)
amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, riscv64, s390x
已发布镜像制品详情:
repo-info仓库的repos/perl/目录 (历史记录)
(镜像元数据、传输大小等)
镜像更新:
official-images仓库的library/perl标签
official-images仓库的library/perl文件 (历史记录)
本描述的来源:
docs仓库的perl/目录 (历史记录)
Perl是一种高级、通用、解释型的动态编程语言。Perl语言借鉴了其他编程语言的特性,包括C、shell脚本(sh)、AWK和sed。
***.org/wiki/Perl
!logo
DockerfiledockerfileFROM mips64le/perl:5.34 COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ "perl", "./your-daemon-or-script.pl" ]
然后,构建并运行Docker镜像:
console$ docker build -t my-perl-app . $ docker run -it --rm --name my-running-app my-perl-app
对于许多简单的单文件项目,编写完整的Dockerfile可能不太方便。在这种情况下,可以直接使用Perl Docker镜像运行Perl脚本:
console$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp mips64le/perl:5.34 perl your-daemon-or-script.pl
/usr/bin/perl共存本镜像构建的perl二进制文件安装在/usr/local/bin/perl,同时包含Perl发行版中的其他标准工具(如prove和perldoc),以及用于安装CPAN模块的cpanm。运行本镜像的容器会将PATH环境变量设置为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,以确保在正常使用时优先找到此perl二进制文件。
由于此Docker***镜像是使用buildpack-deps镜像(或slim变体使用的debian:slim)构建的,因此该镜像还包含Debian项目提供的/usr/bin/perl。这是底层dpkg/apt)包管理工具正常工作所必需的,因为docker-perl在此处无法使用,原因是配置不同(如@INC和安装路径,以及是否包含-Dusethreads等其他差异)。
更多讨论请参见Perl/docker-perl#26。
由于Perl默认在容器中以PID 1运行(除非设置了ENTRYPOINT),因此在期望发送信号(尤其是SIGINT或SIGTERM)时需要特别注意。例如,运行
console$ docker run -it --name sleeping_beauty --rm mips64le/perl:5.34 perl -E 'sleep 300'
然后在另一个终端执行
console$ docker exec sleeping_beauty kill 1
不会停止sleeping_beauty容器中的perl进程(它会继续运行直到sleep 300完成)。要解决此问题,必须设置信号处理程序,如下所示:
console$ docker run -it --name quick_nap --rm mips64le/perl:5.34 perl -E '$SIG{TERM} = sub { $sig++; say "recv TERM" }; sleep 300; say "waking up" if $sig'
此时执行docker exec quick_nap kill 1(或更简单的docker stop quick_nap)将立即停止容器,并在另一个终端打印recv TERM。请注意,信号处理程序本身不会停止perl进程,除非调用die或exit;在本例中,perl会在接收信号后继续运行并打印waking up。
如果您的Perl程序需要处理信号并 fork 子进程,建议使用类似init的程序作为ENTRYPOINT,例如dumb-init或tini(后者自Docker 1.13起可通过docker run --init标志使用)。
更多信息请参见perlipc中的信号以及Perl/docker-perl#44。
COPY和WORKDIR行为由于我们的Perl镜像基于标准buildpack-deps和debian镜像,因此它们继承了Debian 12(Bookworm)中引入的新merged-usr根文件系统布局,这可能会影响某些将自己的bin、sbin或lib目录COPY到WORKDIR /的构建上下文。建议用户尽可能将WORKDIR显式设置为非/的路径,例如示例中的/usr/src/app,不过在当前版本中,我们的镜像默认已将WORKDIR设置为/usr/src/app。
更多信息请参见Perl/docker-perl#140。
假设您有一个使用Carton管理Perl依赖的项目。您可以创建一个mips64le/perl:carton镜像,在其Dockerfile中使用ONBUILD指令,如下所示:
dockerfileFROM mips64le/perl:5.34 RUN cpanm Carton \ && mkdir -p /usr/src/app WORKDIR /usr/src/app ONBUILD COPY cpanfile* /usr/src/app ONBUILD RUN carton install ONBUILD COPY . /usr/src/app
然后,在您的Carton项目中,现在可以将项目的Dockerfile简化为单行FROM mips64le/perl:carton,这可能足以构建独立镜像。
拥有单个mips64le/perl:carton基础镜像特别有用,尤其是在开发多个基于Carton的项目时,可以避免“样板式”编码(如安装Carton和/或将项目源文件复制到派生镜像中)。但请注意,以这种方式使用Perl镜像时需要考虑以下几点:
COPY/RUN)隐藏在镜像中,与使用该基础镜像的更具体的Dockerfile分离。这可能会在创建进一步的派生镜像时导致混淆,因此请了解ONBUILD触发器的工作原理并做好规划。perl镜像派生可能更可取。mips64le/perl镜像有多种版本,每种版本设计用于
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429