您的位置:首页 > 运维架构 > Docker

制作Docker基础镜像------centos6.3

2016-07-07 11:21 966 查看
制作Docker基础镜像------centos6.3 2015-03-22 16:37:28
分类: 云计算

Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub 公共注册服务器中的仓库)。我们可以从Docker Hub下pull已经存在的Docker镜像,也只是自己制作基础的镜像,然后再基础镜像的基础上添加所需要的功能。

1. 获取镜像

可以使用 docker pull 命令来从仓库获取所需要的镜像。下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。 $ sudo docker pull ubuntu:12.04 下面是从Docker-hub上获取centos的镜像[root@centos docker]# docker pull centos:centos6centos:centos6: The image you are pulling has been verified511136ea3c5a: Pull complete5b12ef8fd570: Pull completea30bc9f3097e: Pull completeStatus: Downloaded newer image for centos:centos6如果在执行镜像后出现下面的不是我们平常看到的Linux的命令提示行,而是bash-4.1#,。那是因为/root目录是空的,没有用户相关的配置文件。解决办法是把/etc/skel/目录下的东西cp到当前用户的家目录下,也就是/root目录下。因为创建用户时,用户的家目录下的文件其实都是从这个目录下copy过去的。bash-4.1# cp /etc/skel/.b* /rootbash-4.1# su root[root@94f1b01d78f3 /]# 这也可以再制作镜像的时候添加,后面会有介绍。

2. 自制镜像

2.1 制作镜像文件

我们看到Docker Hub上有许多的基础镜像,我们也可以自己制作镜像,这里制作的镜像版本问centos6.3版本,需要使用到的工具是:febootstrap,可以使用yum –y install febootstrap 进行安装,使用下面的命令进行制作: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.3-imagehttp://vault.centos.org/6.3/os/x86_64/ centos6:OS版本。 centos6.3-image:镜像文件保存到当前路径下的centos6.3-image文件夹下。 http://vault.centos.org/6.3/os/x86_64/ : centos6.3系统镜像路径。上面的-i选项表明我制作的基础镜像中已经包含的一些包,需要什么包可以在下面的地址中查找到http://vault.centos.org/6.3/os/x86_64/Packages/,由于URL的地址都是在墙外面可能会造成制作过程异常的慢,如果速度太慢的话可能造成制作不成功,http://vault.centos.org/6.3/os/x86_64/Packages/curl-7.19.7-26.el6_2.4.x86_64.rpm: [Errno 12] Timeout on http://vault.centos.org/6.3/os/x86_64/Packages/curl-7.19.7-26.el6_2.4.x86_64.rpm: (28, 'Operation too slow. Less than 1 bytes/sec transfered the last 30 seconds')Trying other mirror.最后的结果可能出现下面的错误:Error Downloading Packages: curl-7.19.7-26.el6_2.4.x86_64: failure: Packages/curl-7.19.7-26.el6_2.4.x86_64.rpm from febootstrap: [Errno 256] No more mirrors to try. chroot: failed to run command `rm': No such file or directorychroot: failed to run command `rm': No such file or directory 如果出现上面的情况,建议使用云计算厂商北美的云主机,然后再把制作好的拷贝过来,或者需要***。制作完成后如下;[root@ centos6.3-image]# lsbin boot dev etc home lib lib64 media mnt opt proc root sbin selinux srv sys tmp usr var 但是在root下面的并没有任何的文件,这样就好出现进入Docker后出现bash4.1的问题,[root@ root]# ls -altotal 8dr-xr-x--- 2 root root 4096 Sep 23 2011 .dr-xr-xr-x 21 root root 4096 Feb 27 16:40 .. 可以使用下面的命令进行拷贝:root@10-10-62-234 centos6.3-image]# cp /etc/skel/.bash* root/

2.2 导入镜像文件

使用下面的命令导入镜像文件,并生产镜像的ID。[root@centos docker]# cd centos6.3-image && tar -c .|docker import - centos6.3-basee7275ddab321d86f9b75b610007cf8dc78137c83a5721300877d35aeac57bb57使用docker images就可看到我们导入的镜像[root@centos centos6.3-image]# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEcentos6.3-base latest e7275ddab321 53 seconds ago 355.4 MB
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  docker