动手制作自己的Docker镜像
2016-01-13 14:30
926 查看
动手制作自己的Docker镜像,网上很多镜像供我们选择,为什么还要自己制作镜像呢?说到底,别人做的我不喜欢【没安装我想要的包】
重要说明:制作镜像的系统要和你将制作的镜像系统要相符,比如:制作Centos6.5的镜像就是要Centos 6的系统内。如果在Centos6 上制作Centos7的镜像都会出错。提示:/usr/lib64/libc.so.6 文件找不到。在7的系统上制作6的同样出错。
方法一:网络资源(网络稳定就好。)
当前系统:CentOS release 6.5 3.10.94-1.el6.elrepo.x86_64 【内核是升级了,要不然无法安装Docker】
首先要安装febootstrap工具:
先装个EPEL源:
重要说明:制作镜像的系统要和你将制作的镜像系统要相符,比如:制作Centos6.5的镜像就是要Centos 6的系统内。如果在Centos6 上制作Centos7的镜像都会出错。提示:/usr/lib64/libc.so.6 文件找不到。在7的系统上制作6的同样出错。
方法一:网络资源(网络稳定就好。)
当前系统:CentOS release 6.5 3.10.94-1.el6.elrepo.x86_64 【内核是升级了,要不然无法安装Docker】
首先要安装febootstrap工具:
先装个EPEL源:
rpm -ivh http://mirrors.yun-idc.com/epel/epel-release-latest-6.noarch.rpm[/code] 安装:febootstrapyum install febootstrap -y利用febootstrap制作镜像,它会自动下载我们想要的包到指定目录下:febootstrap -i bash -i wget -i yum -i man -i vim -i openssh-server -i openssh-clients -i tar -i gzip centos centos6.5 http://mirror.symnds.com/distributions/CentOS-vault/6.5/os/x86_64/[/code] 参数说明:
-i:后跟着的就是制作的基础镜像中已经包含的一些包,需要什么包可以在下面的地址中查找。
centos表示此镜像是Centos系统
centos6.5表示命令中所有的包安装到当前目录下的centos6.5的目录中,目录会自动创建。
复制当前系统中root用户的bash 基本环境到准备打包的目录下的root/目录下。正常情况下是没有文件的。[root@Docker centos6.5]# cp /etc/skel/.bash* root/接下来就把刚才的目录导入到镜像中:[root@Docker ]# cd centos6.5 && tar -c .|docker import - centos6.5 f67f40bb4a73f6fa3b33eeef313231267857388476c3c8f879a70c7a3075d731看不到上面的字符相信都知道啦。
检查是否成功制作镜像;
方法二:利用本地光盘制作Docker镜像
挂载系统光盘到/mnt目录下:[root@Docker ~]# mount /dev/cdrom /mnt [root@Docker ~]# ls /mnt/ CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6 EFI Packages RPM-GPG-KEY-CentOS-Security-6 EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 GPL repodata TRANS.TBL images RPM-GPG-KEY-CentOS-6建立本地源:[root@Docker ~]# cd /etc/yum.repos.d/ [root@Docker yum.repos.d]# tar zcf yum.tar.gz . [root@Docker yum.repos.d]# ll total 32 -rw-r--r--. 1 root root 1926 Nov 27 2013 CentOS-Base.repo -rw-r--r--. 1 root root 638 Nov 27 2013 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 630 Nov 27 2013 CentOS-Media.repo -rw-r--r--. 1 root root 3664 Nov 27 2013 CentOS-Vault.repo -rw-r--r-- 1 root root 1190 Jan 8 2013 elrepo.repo -rw-r--r-- 1 root root 957 Nov 5 2012 epel.repo -rw-r--r-- 1 root root 1056 Nov 5 2012 epel-testing.repo -rw-r--r-- 1 root root 2016 Jan 12 15:51 yum.tar.gz [root@Docker yum.repos.d]# rm -rf *.repo [root@Docker yum.repos.d]# ls yum.tar.gz添加本地源文件:[root@Docker yum.repos.d]# cat >/etc/yum.repos.d/cdrom.repo <<EOF [c6-media] name=CentOS-Media baseurl=file:///mnt gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 EOF清除之前的yum缓存:[root@Docker yum.repos.d]# yum clean all接着安装apache:yum install httpd -y修改Apache配置文件,把网站根目录指向挂载光盘的目录:/mnt把:292 行 DocumentRoot "/var/www/html" 修改为: DocumentRoot "/mnt" 启动httpd服务: service httpd start执行如下命令:刷一下,很快这完整安装了。febootstrap -i bash -i wget -i yum -i man -i vim -i openssh-server -i openssh-clients -i tar -i gzip centos centos6.5-base http://127.0.0.1[/code]进入目录:centos6.5-base
复制当前系统中root用户的bash 基本环境到准备打包的目录下的root/目录下。正常情况下是没有文件的。[root@Docker centos6.5]# cp /etc/skel/.bash* root/
最后把目录打包到镜像中即可。[root@Docker ~]# cd centos6.5-base && tar -c .|docker import - centos6.5 3005dc0c28c7c33dafc73370d1b2c069020387641069150bc41ffd4d7a45e966[root@Docker centos6.5-base]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos6.5 latest 3005dc0c28c7 17 seconds ago 372 MB <none> <none> f67f40bb4a73 31 minutes ago 372.9 MB centos centos7v1 92e2936b5246 24 hours ago 333.9 MB centos latest 60e65a8e4030 2 weeks ago 196.6 MB centos centos7.1.1503 fab4b1df8eb1 3 months ago 212.1 MB
这里特别注意:cd centos6.5-base && tar -c .|docker import - centos6.5
后面这个【centos6.5】是镜像名,不要跟已经存在的相同,或者直接在镜像名后再加个TAG标签:
由于我添加相同的,造成刚才利用网络资源制作的镜像名和TAG都变成NONE了。
加个TGA的情况就不同了。[root@Docker ~]# cd centos6.5-base && tar -c .|docker import - centos6.5:v1 6c843268493d5a1cc45aff67a5b29ea4251ad85da2cf8de6cebab4a195086f71 [root@Docker centos6.5-base]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos6.5 v1 6c843268493d 10 seconds ago 372 MB centos6.5 latest 3005dc0c28c7 3 minutes ago 372 MB centos centos7v1 92e2936b5246 24 hours ago 333.9 MB centos latest 60e65a8e4030 2 weeks ago 196.6 MB centos centos7.1.1503 fab4b1df8eb1 3 months ago 212.1 MB然后就可以使用自己创建的镜像运行容器了。
文章首发:封尘网:http://www.58jb.com/
相关文章推荐
- ubuntu 14.04lts 搭建kickstart安装环境之系统安装镜像制作(apache版)
- centos7安装docker
- 我的第一个docker镜像
- CentOS release 6.5 (Final) 制作openstack用的镜像
- Docker镜像
- Docker <二> 常用命令
- Docker入门实践之镜像管理
- 制作win2003R2x64bit英文版的openstack镜像
- JSP
- Docker之Docker镜像管理
- docker 镜像下安装Vim
- 如何制作Docker镜像
- Dokcer镜像
- docker使用国内镜像(阿里镜像加速)
- docker核心-------镜像
- 005_镜像分层
- 006_制作第一个Docker镜像
- Dockerfile 创建第一个镜像,docker
- docker容器,docker commit创建ssh容器