当前位置 博文首页 > 文章内容

    使用Dockerfile定制docker镜像

    作者: 栏目:未分类 时间:2020-07-02 14:11:03

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    Docker Store上已经有很多官方的镜像我们可以直接使用,但是有时候我们的环境和镜像会有些许差异,在pull之后还需要做一些变更,如果是团队开发那操作起来就略显繁琐,如果能实现镜像的定制那就很方便了。

    定制镜像有两种方式一种是从容器commit生成镜像,但是这种操作生成的镜像体积会比较大,很多无用的操作都会打包到镜像里面,下面介绍使用Dockerfile来定制镜像,以php镜像为例,假设我们需要定制mysqli pdo redis等扩展,那可以在空白目录下创建一个Dockerfile文件

    vi Dockerfile

    然后输入如下内容

    FROM php:7.3-fpm
    RUN docker-php-ext-install pdo pdo_mysql mysqli \
    && pecl install redis-4.2.0 && docker-php-ext-enable redis

    解释一下

    FROM表示使用某个基础镜像,这里我们使用php:7.3-fpm
    RUN 表示运行某个指令,其实就是安装对应扩展的指令,和我们运行镜像之后在容器内安装扩展是一样的,当然还有其他很多指令COPY ADD ...等等

    接下来需要构建镜像可以在当前目录下执行

    docker build -t myphp:latest .

    这样就构建了一个myphp:latest的镜像,可以推送到共有或者私有镜像仓库提供给团队成员使用

    下面在举一个nginx的例子,假设我们需要自己定义nginx的配置文件可以编辑好nginx的配置文件然后在Dockerfile中设置COPY指令拷贝到镜像中去,下面给出Dockerfile的内容

    FROM nginx:latest
    COPY default.conf /etc/nginx/conf.d/default.conf
    COPY index.php /usr/share/nginx/html/index.php

    这样就可以使用构建镜像的命令构建镜像,之后再run产生的容器中的配置文件就是定制后的镜像文件