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

1200阅读 0评论2016-10-23 oceanyang520
分类:云计算


        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:centos6

centos:centos6: The image you are pulling has been verified

511136ea3c5a: Pull complete

5b12ef8fd570: Pull complete

a30bc9f3097e: Pull complete

Status: Downloaded newer image for centos:centos6

如果在执行镜像后出现下面的不是我们平常看到的Linux的命令提示行,而是bash-4.1#,。那是因为/root目录是空的,没有用户相关的配置文件。解决办法是把/etc/skel/目录下的东西cp到当前用户的家目录下,也就是/root目录下。因为创建用户时,用户的家目录下的文件其实都是从这个目录下copy过去的。

bash-4.1# cp /etc/skel/.b* /root

bash-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-image

   centos6:OS版本。

   centos6.3-image:镜像文件保存到当前路径下的centos6.3-image文件夹下。

   : centos6.3系统镜像路径。

上面的-i选项表明我制作的基础镜像中已经包含的一些包,需要什么包可以在下面的地址中查找到,由于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 directory

chroot: failed to run command `rm': No such file or directory

         如果出现上面的情况,建议使用云计算厂商北美的云主机,然后再把制作好的拷贝过来,或者需要VPN。制作完成后如下;

[root@ centos6.3-image]# ls

bin  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 -al

total 8

dr-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-base

e7275ddab321d86f9b75b610007cf8dc78137c83a5721300877d35aeac57bb57

使用docker images就可看到我们导入的镜像

[root@centos centos6.3-image]# docker images

REPOSITORY      TAG    IMAGE ID            CREATED             VIRTUAL SIZE

centos6.3-base   latest        e7275ddab321    53 seconds ago      355.4 MB


上一篇:通过yum解决软件的依赖关系
下一篇:自己动手搭建Git服务器-Gitblit