我简单的操作了几个docker命令,但是有时候使用公共仓库下载的镜像,总是和业务有些不太完全符合,因此我要定制符合自己业务情况的基础镜像,自制镜像的方法多种多样,目前介绍三种方法: 1 利用已有的ISO镜像制作基本镜像,以ubuntu14.04为例 mount -o loop ubuntu-14.04-server-amd64.iso /media/cdrom tar -C /media/cdrom -c . | docker import - guol/ubuntu14 这样很块就可以制作好一个基础镜像,但是这个镜像制作出来很大,里面包含了一些我们不需要的软件,如果你想裁剪的话,可以使用chroot命令进入基础镜像里面,做一些软件包的删减。 2 debian/ubuntu系列有个工具debootstrap,可以用来制作较小的镜像,但是也有300M,可以修改构建脚本,进行裁剪,以ubuntu14.04为例 debootstrap --variant=buildd --arch=amd64 trusty trusty http://mirrors.163.com/ubuntu/ tar -C trusty -c . | docker import - trusty 注意:debootstrap的使用方法 debootstrap [OPTION...] SUITE TARGET [MIRROR [SCRIPT]] SUITE 是一些linux发行版的名称,默认在/usr/share/debootstrap/scripts/目录下有的linux发行版构建脚本才能使用,默认debootstrap就是根据这些脚本做构建的 MIRROR 一般默认使用官方的源构建,这样比较慢,一般都换成国内源,这个源默认是在/usr/share/debootstrap/scripts/的构建脚本中设置的,直接加在命令行会覆盖里面的设置 SCRIPT debootstrap根据什么脚本做镜像构建,默认使用/usr/share/debootstrap/scripts/目录下的,你也可以自己编写。 3 使用官方的构建脚本,在github上官方源码里面就有。 git clone https://github.com/dotcloud/docker.git cd docker/contrib 来看看下载的源码里都有什么,进入contrib目录 可以看到很多镜像构建脚本,根据你的操作系统选择脚本,我使用的是mkimage-debootstrap.sh,不过有个问题就是采用自带脚本安装时该脚本只支持debian6 ubuntu12,因为脚本中只指定了这两个发行版,不过可以自己手动修改脚本,以支持更多的发行版。该脚本会在/tmp目录下创建一个临时目录来构建镜像,构建成功后自动import,然后自动删除该构建目录,这个制作出来的镜像比较小180M左右。 ./mkimage-debootstrap.sh ubuntu12 precise http://mirrors.sohu.com/ubuntu/ 可以看到自动制作镜像,并且自动提交。 5-22 docker更新真是快啊,今天git下载了最新的源码,发现mkimage-debootstrap.sh已经支持ubuntu14.04了,不过该脚本以后要放弃使用了,官方建议使用同一目录下的mkimage.sh脚本来构建镜像。 搭建私有仓库 有时候从公有仓库获取镜像的时候,出现网络问题,经常就不通了,很无奈,所以还是搭建一个自己的私有仓库比较靠谱。关于搭建私有仓库的办法,官方已经给出方案了,那就是docker-registry。例如: 1 在使用docker-registry之前,先安装相关的程序的运行环境 apt-get install python-dev libevent-dev python-pip libssl-dev git2 下载docker-registry源码,并使用pip安装基本运行环境,最好自己指定pip源啊,默认源莫名的就被墙了一些 git clone https://github.com/dotcloud/docker-registry.git cd docker-registry pip install -r requirements.txt -i http://pypi.douban.com/simple3 修改配置文件 cp config/config_sample.yml config.yml vi config.yml dev: storage: local storage_path: /opt/registry loglevel: debug4 启动相关程序 gunicorn --access-logfile - --debug -k gevent -b 0.0.0.0:5000 -w 1 docker_registry.wsgi:application5 上传你的镜像 docker tag 31bbec52e9b6 192.168.2.109:5000/guol docker push 192.168.2.109:5000/guol (责任编辑:IT) |