docker创建自己的image

有两种方法可以创建我们自己的image
(1)、我们可以利用已有的image运行一个容器,进行update操作;然后通过docker commit操作生成一个新的image。
(2)、自己创建一个dockerfile文件,在dockerfile中定义instructions(指令)来创建image

1、基于已有的image创建自己需要的iamge

例如,从已有的training/sinatra创建一个安装了json的image
(1)从training/sinatra这个image运行一个容器
sudo docker run -t -i training/sinatra /bin/bash
root@0b2616b0e5a8:/#
(2)在运行中的容器安装json
root@0b2616b0e5a8:/# gem install json
(3)使用docker commit命令copy这个容器到一个新的image
在第二步中,安装完json后,使用exit退出容器的运行,
$ sudo docker commit -m "Added json gem" -a "Kate Smith" 0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
其中,-m表示一个commit message,-a 表示author的信息,指定创建的new iamge来自于container id 0b2616b0e5a8,此外还为新建的image定义一个组合名称ouruser/sinatra:v2。
使用docker images可以看到新建的images
$ sudo docker images
REPOSITORY          TAG     IMAGE ID       CREATED       VIRTUAL SIZE
training/sinatra    latest  5bc342fa0b91   10 hours ago  446.7 MB
ouruser/sinatra     v2      3c59e02ddd1a   10 hours ago  446.7 MB
ouruser/sinatra     latest  5db5f8471261   10 hours ago  446.7 MB

2、使用dockerfile创建自定义image
  一些建议:(1)你有自定义的image创建的container应尽量是短暂的,所谓的短暂是指,你在运行容器时能实现自己目的的步骤应尽可能的少;
    (2)使用.dockerignore文件
    (3)避免安装不必要的packages,比如在数据库image中安装文本编辑器
    (4)一个容器运行一个进程,如果该容器运行的程序依赖其他服务,使用容器link系统来连接两个容器
    (5)在dockerfile的可读性和最少的layers之间保持平衡
    (6)使用cache构建
  在docker build命令中使用--no-cache=true参数可以禁用cache,docker使用cache遵循以下的规则:
(1)、首先以一个cache中存在的base image作为基准,下一个步骤就是比较instruction与所有的来自base image的child image,查看是否匹配,如果没有匹配的,则缓存是无效的。
(2)、对于RUN apt-get命令,最好以下面形式:RUN apt-get update && apt-get install -y \
    aufs-tools \
    automake \
    btrfs-tools \
    build-essential \
    curl \
    dpkg-sig \
    git \
    iptables \
    libapparmor-dev \
    libcap-dev \
    libsqlite3-dev \
    lxc=1.0* \
    mercurial \
    parallel \
    reprepro \
    ruby1.9.1 \
    ruby1.9.1-dev \
    s3cmd=1.1.0*
    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值