14.8 Perl

Perl是一个高级的、动态的解释型脚本语言,它的设计借鉴了C、Shell、awk和sed。Perl最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。Perl像C一样强大,同时像awk、sed等脚本语言一样富有表达性。Perl常见于系统管理和文件处理等程序,Perl多数情况下属于Web方案中的胶水语言。

14.8 Perl - 图1

可以使用Docker官方的Perl镜像作为基础,在此之上进行必要的定制。

第一步,下载官方的Perl镜像:


  1. $ docker pull perl

如果读者对Perl的版本有要求,可以在以上命令中加入Tag标签,以便于在下一步的Dockerfile的FROM指令中明确Perl版本号。官方镜像都有明确的标签信息。

第二步,在Perl项目中新建Dockerfile:


  1. FROM perl:5.20
  2. COPY . /usr/src/myapp
  3. WORKDIR /usr/src/myapp
  4. CMD [ "perl", "./perl-sample.pl" ]

新建perl-sample.pl文件:


  1. #!/usr/bin/perl
  2. print "Hello, World!\n";

第三步,通过此Dockerfile,构建自定义的镜像:


  1. $ docker build -t perl-image .

构建成功后,用户可以通过docker images查看:


  1. $ docker images
  2. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  3. perl-image latest bc28eba086ad About a minute ago 654.9 MB

最后,创建容器并运行:


  1. $ docker run -it --rm --name perl-container perl-image
  2. Hello, World!

如果读者只需要运行单个的Perl脚本,那么无需使用Dockerfile构建自定义镜像,而是通过以下命令直接使用官方Perl镜像,带参数运行容器:


  1. $ docker run -it --rm --name perl-container -v "$(pwd)":/usr/src/myapp -w
  2. /usr/src/myapp perl:5.20 perl perl-sample.pl
  3. Hello, World!

如果读者需要运行Perl的Web项目,则最好先自建内置SSH服务的镜像,然后以此为基础定制Perl容器,这样可以方便地通过SSH服务访问Perl容器。