構建屬於本身的原生docker images

製做image原生鏡像須要使用febootstrap工具,須要注意的是,在centos7系列中,默認的源中不帶此包,可是在centos6系列中,該包是默承認用使用的。linux

  • 在centos6中安裝febootstrap
# yum install febootstrap -y
會安裝相應的軟件包:fakechroot-2.9-24.5.el6_1.1.x86_64.rpm  fakechroot-libs-2.9-24.5.el6_1.1.x86_64.rpm  fakeroot-1.12.2-22.2.el6.x86_64.rpm  fakeroot-libs-1.12.2-22.2.el6.x86_64.rpm  febootstrap-supermin-helper-3.21-4.el6.x86_64.rpm
此時會生成一個命令febootstrap
  • 使用febootstrap工具構建基礎鏡像:
#febootstrap -i bash -i wget -i yum -i iputils -i iproute centos6.8 centos6.8-doc http://mirrors.163.com/centos/6.8/os/x86_64/


須要注意的是,-i參數表示安裝包,centos6.8爲image版本,centos6.8-doc爲生成鏡像的目錄,後面的url爲鏡像源地址。 
接下來很快就會構建完成,而後生成一個基礎鏡像:docker

# ls centos6.8-doc
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var

能夠看到生成的centos6.8-doc目錄裏面已經包含了linux系統的基本文件系統。其實生成這樣一個目錄就至關於已是一個基本的linux鏡像了,只須要打包並分發到docker主機,並構建成相應的docker image就能夠使用了。bootstrap

  • 使用docker工具導入此鏡像: 
    不論在什麼環境,首先進入centos6.8-doc目錄,而後將鏡像導入:
# cd centos6.8-doc
# tar -c .|docker import - centos:6.8
f86315da0e5ddfdbc2aaf169d7f26cf9e071afb7df04bc207ff0d5b623221c8c
此時,便生成了一個鏡像。
# docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos                                6.8                 f86315da0e5d        6 seconds ago       392.9 MB
  • 接下來使用這個鏡像去建立和使用容器:
# docker run -itd -P centos:6.8 bash
45fc3313c92f8ef8b1fe841da580ca0759b82e54a507c3985dc1c65d6106e12d
# docker ps -a 
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS                  NAMES
45fc3313c92f        centos:6.8                   "bash"              20 seconds ago      Up 19 seconds                              desperate_meitner

# docker exec -it desperate_meitner cat /etc/redhat-release 
CentOS release 6.8 (Final) 
能夠看到,當前的image鏡像就是當時建立6.8版本的

# docker exec -it desperate_meitner ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
311: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:0a:00:00:25 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.37/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:aff:fe00:25/64 scope link 
       valid_lft forever preferred_lft forever

到此,一個完整的基本的docker images就已經作好了。centos

相關文章
相關標籤/搜索