1. 程式人生 > >龍芯Fedora21平臺製作feodra21-tools docker映象

龍芯Fedora21平臺製作feodra21-tools docker映象

 http://ask.loongnix.org/?/article/82

在按照本文的方式製作映象之前,首先要先建立基礎映象fedora21-base,可以參考:
http://ask.loongnix.org/?/article/81 


 建立feodra21-tools映象的必要性
 
在已經建立的feodra21-base映象中不包含常用命令,如:ifconfig、w3m、wget、vim等命令。當在feodra21-base容器的命令列中輸入這些命令時,會有錯誤提示,如下:

[[email protected] /]# ifconfig
bash: ifconfig: command not found
[
[email protected]
/]# w3m bash: w3m: command not found [[email protected] /]# wget bash: wget: command not found [[email protected] /]# vim bash: vim: command not found

所以,還需要在建立一個只包含基本命令的映象。
 實驗環境
 
本文的實驗都是在龍芯3A3000機器上。
作業系統是loongnix(Fedora21)20170726版本,
docker是1.12.2版本。
 
映象內容


 
feodra21-tools映象中包含一些常用命令,如:ifconfig、w3m、wget、vim
 
製作映象前期準備
 
本文將演示使用Dockerfile如何建立映象,Dockfile是一種被Docker程式解釋的指令碼,Dockerfile由一條一條的指令組成,每條指令對應Linux下面的一條命令。
在宿主機下 /root/image 目錄下建立一個 tools 資料夾,將Dockerfile和run.sh檔案存到 tools 資料夾內,具體步驟為:

# mkdir /root/image/tools  -p
# cd /root/image/tools/
# vi run.sh




編寫run.sh檔案,如下程式碼所示:

#!/bin/bash

export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8

/bin/bash

編寫Dockerfile檔案,如下程式碼所示:

# vi Dockerfile

以下是Dockerfile包含的內容:

FROM fedora21-base:21

RUN yum install -y "net-tools"
RUN yum install -y "w3m"
RUN yum install -y "wget"
RUN yum install -y "vim-enhanced"
RUN yum install -y "tar"
RUN yum install -y "git"

RUN mkdir /usr/lib/locale -p
RUN /bin/sh -c 'cd /usr/lib/locale && sleep 2 && yum reinstall -y "glibc-common"'
RUN echo zh_CN.UTF-8 > /etc/locale.conf

ADD run.sh /
RUN chmod 777 /run.sh
CMD ["/run.sh"]


 
Dockerfile檔案描述的幾個解釋:
           1、FROM:  FROM指令指定的基礎image,本文中指定已經建立好的fedora21-base映象,格式為:                          映象名稱:映象標籤(TAG)

           2、RUN:  RUN可以執行任何被基礎image支援的命令。本文中執行yum install 命令,下載安裝                                  net_tools、w3m、wget、vim。
 
           3、CMD: 設定指令,用於container啟動時指定的操作。
 
           4、CMD:設定指令,用於container啟動時指定的操作。本文中在container啟動時執行ADD複製的run.sh檔案。

執行Dockerfile檔案建立映象

  • 通過docker build命令建立映象,程式碼如下所示:
# docker build -t feodra21-tools .

當Dockerfile檔案中的四條RUN命令都Complete以後,最後會有如下輸出,代表建立映象成功:

Removing intermediate container da84d9ffbcd7Successfully built 204d157f7074
  • 驗證feodra21-tools映象是否建立成功,程式碼如下:
# docker images

REPOSITORY       TAG        IMAGE ID        CREATED         SIZE
feodra21-tools   latest     204d157f7074    3 minutes ago   487.2 MB
fedora21-base    21         099b24f7ff5a    33 hours ago    206.9 MB

通過檢視docker images的執行結果可以確定feodra21-tools映象建立成功,fedora21-base映象就是Dockerfile檔案中FROM 指定的基礎映象。
 
 

d1.png



 
建立docker容器
 
建立好feodra21-tools映象,就可以建立容器了,程式碼如下:

[[email protected] tools]# docker run -i -t feodra21-tools
[[email protected] /]#

docker run命令中,-i 代表容器可以接收鍵盤上的輸入(主要用於在容器的命令上執行程式);-t 和 -i 配合使用。
 容器執行成功後可以看見一個明顯的變化,就是命令列提示符已經由本機的機器名稱(localhost)變成了容器的ID(34df78e5bf37)。
 
至此,龍芯feodra21-tools容器建立成功,並且開始正常運行了!

驗證安裝的命令是否可以正常使用
 
在驗證安裝的命令是否可以正常使用,可以在容器裡的命令列分別輸入:ifconfig、w3m、wget、vim。只要不提示 “command not found” 就代表安裝成功,並可以正常使用,使用ifconfig舉例測試:

# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.0.2  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe12:2  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:12:00:02  txqueuelen 0  (Ethernet)
        RX packets 3  bytes 238 (238.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 328 (328.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


 
總結
 
本文描述在龍芯平臺上通過Dockerfile製作映象的方法,併成功執行容器。
如果沒有建立fedora21-base,在執行Dockerfile檔案時會提示基礎映象不存在的錯誤。
以上論述可供開發者和部署伺服器應用的管理員參考。

1.png