做了一个星期的镜像,收货颇多,现在整理记录下来,当做工作笔记吧。把常用的几个镜像的Dockerfile分享下。
制作基础docker镜像
第一步:设置Docker镜像源
yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
第二步:安装 docker-io febootstrap,用来制作centos镜像,到时候会生成个centos的镜像。
yum -y install docker-io;如果没有安装docker,则需要先安装docker
service docker start ;启动docker
yum -y install febootstrap;制作docker镜像工具
第三步:作CentOS镜像文件centos6-image目录
febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim -i openssh-server -i openssh-clients -i tar -i gzip centos6 centos6-image http://mirrors.aliyun.com/centos/6/os/x86_64/
上一步执行后会生成一个centos6-image文件目录,上面命令中参数 -i 后面的都是基础镜像中安装的一些服务。如果你不想要这么多服务(因为把所有服务安装后镜像会变的非常大)可以只安装一些基本的,必不可少的服务。centos6是指版本,centos6-image是生成的目录名称。
第四步:这时root目录下没有任何文件,也不没有隐藏的点文件,如:.bash_logout .bash_profile .bashrc如果这时制作出来的镜像使用ssh登录,会直接进入根目录下,而一般镜像都是进入root目录下的,所以可以在centos6-image目录的root目录把.bash_logout .bash_profile .bashrc这三个文件设置一下。
cd centos6-image && cp etc/skel/.bash* root/
第五步:生成最基础的base镜像
cd centos6-image && tar -c .|docker import - centos6-base
第六步:查看镜像,也可以直接进入centos6-base查看
docker images ;这个是查看所有生成的镜像
docker run -i -t centos:centos6 /bin/bash;进终端(没有ssh服务),-i 分配终端,-t表示在前台执行,-d表示在后台运行
根据基础镜像制作ssh的docker镜像
制作ssh登录镜像,最主要的就是Dockerfile(当然这里说的就是Dockerfile这种方法),在某个目录中新建一个Dockerfile文件(命名一定要为Dockerfile)。
下面来分析下Dockerfile文件:
#Dockerfile
FROM centos6-base #表示把某个镜像作为基础镜像,相当于面向对象语言中继承,表示生成的镜像里面包含了基础镜像的一些服务