Docker构建镜像的三种方式(Dockerfile初步)

前言

​上篇讲述了有关docker网络通信部分原理以及案例,本篇文章将讲述有关docker构建镜像的具体操作。本文将从docker构建镜像的方式入手,逐一讲述。

  • 揭开Docker的面纱 – 基础理论梳理和安装流程演示  CentOS:7
    #维护该镜像的用户信息(自定义)
    MAINTAINER lokott@123.com
    #镜像操作命令
    RUN yum -y update
    RUN yum -y install openssh-server
    RUN sed -i ‘s/UsePAM yes/UsePAM no/g’ /etc/ssh/sshd_config
    RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
    RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
    #开启端口
    EXPOSE 22
    #启动容器时执行指令
    CMD [“/usr/sbin/sshd”,“-D”]

    基于已有镜像构建镜像

    ​ 上述的Dockerfile的构建镜像的方式是自动化进行的,那么手动构建的方式就是剩下的两种了。

    基于已有的镜像构建主要是通过docker commit 命令来构建新的镜像,其实质就是将一个容器里面运行的程序以及该程序的运行环境打包起来生成新的镜像

    docker commit的语法规则及可选项介绍

    Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    
    Create a new image from a container's changes
    
    Options:
      -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")#作者信息
      -c, --change list      Apply Dockerfile instruction to the created image
      -m, --message string   Commit message #说明信息
      -p, --pause            Pause container during commit (default true) #生成过程中停止容器的运行
    

    案例:基于原有镜像构建新的镜像(看实质原理)

    1.创建一个容器

    [root@localhost ~]# docker create -it nginx /bin/bash
    Unable to find image 'nginx:latest' locally
    latest: Pulling from library/nginx
    123275d6e508: Pull complete 
    6cd6a943ce27: Pull complete 
    a50b5ac4a7fb: Pull complete 
    Digest: sha256:d81f010955749350ef31a119fb94b180fde8b2f157da351ff5667ae037968b28
    Status: Downloaded newer image for nginx:latest
    fb9a4cdb1b79a5e4d82177afdbe8c1f1956888733979f15ae562e0013f4e0f29
    
    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    fb9a4cdb1b79        nginx               "/bin/bash"         17 seconds ago      Created                                 vibrant_heisenberg
    

    2.基于该容器使用docker commit 命令创建新的镜像

    [root@localhost ~]# docker commit -m new_image -a lokott fb9a4cdb1b79 lokott:demo
    sha256:bb848fe7eb3655a07e6577e05bc04ab6404549a24c49fa5d3161ceb767a048f2
    [root@localhost ~]# docker images | grep lokott
    lokott              demo                bb848fe7eb36        26 seconds ago           127MB
    

    基于本地模板构建镜像

    该方式是通过导入操作系统模板文件生成镜像,模板可以从OPENVZ开源项目下载,下载地址为:http://openvz.org/Download/template/precreated

    下面直接给出例子——将debian模板压缩包导入为本地镜像

    [root@localhost ~]# ls
    anaconda-ks.cfg                docker.sh             公共  视频  文档  音乐
    debian-7.0-x86-minimal.tar.gz  initial-setup-ks.cfg  模板  图片  下载  桌面
    [root@localhost ~]# cat debian-7.0-x86-minimal.tar.gz | docker import - lokott:new
    sha256:df2ce16066413515db7db8a76243fcaebbd904d10304ab467fefde852dddd9a8
    [root@localhost ~]# docker images | grep new
    lokott              new                 df2ce1606641        14 seconds ago           215MB
    

    本文讲述了docker构建镜像的三种方式,最重要的是上述的第一种方式使用的非常多。

 收藏 (0) 打赏

您的赞助是我分享的最大动力!

支付宝扫一扫赞助

微信钱包扫描赞助

转载请注明出处:STBLOG » Docker构建镜像的三种方式(Dockerfile初步)

分享到: 更多 (0)

热门文章

  • 评论 抢沙发

    评论前必须登录!

    立即登录   注册

    ❤ 感谢您的关注与支持!❤

    对TA表白给我留言
    我要注册

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册

    我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活