使用 Docker 构建自己的镜像

Docker 有两个核心概念需要理清以下,镜像和容器。镜像的英文名称是 image,镜像是一个抽象的服务,镜像一旦构建之后就不能改变,但是可以重新构建,镜像有版本控制。可以使用 docker images 命令查看所有的镜像。而容器的英文名称是 container,是镜像的实例,是具体运行的服务,也就是一个镜像运行一次就产生一个容器。容器可以将当前的状态打包成一个新的镜像,使用 docker ps -a 可以查看所有的容器。

举一个面向对象编程的例子,镜像就是一个类,而容器就是这个类的某一个实例,镜像是容器的模版,是静态的,而容器是运行时动态的。理清这个概念之后,我们就可以着手构建镜像了,而我们部署只需要从这个镜像生成一个新的容器就可以了。

构建镜像

Docker 主要有两种方式构建镜像,一种是从一个镜像开始,手动进行各种操作,然后提交,构建镜像,类似于操作完成后使用 Git 提交构建一个新的镜像。第二种是使用一个构建脚本(Dockerfile)自动打包成新的镜像。这两种方式各有应用场景,第一种适用于自己试验或尝试一些新想法,属于手动型,而第二种则属于自动构建,便于构建自动化 DevOps 及版本控制,文本就介绍使用 Dockerfile 构建镜像的方法。

现在我们以构建一个自己的 PHP 基础环境为例,镜像包含了 Nginx,PHP7 的服务环境,用于快速部署 PHP 应用。

首先,建立一个项目目录,假设为 docker-nginx-php7,此目录作为项目的根目录,因为 Docker 的构建脚本 Dockerfile 是纯文本文件,所以可以使用 git 等版本控制工具进行管理。

第二步创建 Dockerfile 文件,Dockerfile 是 Docker 默认的脚本文件名,也可以指定其他名称,Dockerfile 的官方文档请参考 Dockerfile 文档。Dockerfile 脚本每行一个命令,一般命令用大写字母,后面接命令参数,# 开头的行是注释。下面一步步讲讲主要使用的命令。

FROM centos:7
MAINTAINER wwtg99 <wwtg99@126.com>

第一行 FROM 用于指定基础镜像,就是本镜像是在哪个镜像的基础上修改而来的。一般的操作系统基础镜像 Docker 官方都有提供,我们也可以从自己构建的镜像逐步扩展,构建自己的镜像树。FROM 后面跟的是 <镜像名称>:<版本号>,如果省略冒号及后面的版本号,则默认使用 latest 版本。

第二行 MAINTAINER 是镜像的作者和邮箱。

# Install base library
RUN set -x && \
    yum install -y gcc \
    gcc-c++ \
    autoconf \
    automake \
    libtool \
    wget \
    make \
    cmake

RUN 命令用于在构建阶段执行程序,这里就是 Bash 脚本,这段安装了一些基本的库(基础镜像非常小,删减了很多不必要的程序)。

# Install library
RUN rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值