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

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

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

 

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

 
建立feodra21-loongson-app docker映象的必要性
 
可以方便快捷的搭建和使用龍芯“應用公社”。
 
實驗環境
 
本文的實驗都是在龍芯3A3000機器上。
作業系統是loongnix(Fedora21)20170726版本,
docker是1.12.2版本。
 
映象內容


 
feodra21-loongson-app映象包含龍芯“應用公社”的程式碼和資料庫,可以直接執行。
 
製作映象前期準備
 
本文將演示使用Dockerfile如何建立映象,Dockfile是一種被Docker程式解釋的指令碼,Dockerfile由一條一條的指令組成,每條指令對應Linux下面的一條命令。
 
在宿主機下建立一個 loongson-app 資料夾,將Dockerfile和run.sh檔案存到 loongson-app 資料夾內,具體步驟為:

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





 

  • 編寫run.sh檔案,如下程式碼所示:
#!/bin/bashcd '/usr' ; /usr/bin/mysqld_safe --datadir='/var/lib/mysql' &/usr/sbin/httpd &export LC_ALL=zh_CN.UTF-8export LANG=zh_CN.UTF-8/bin/bash

可見run.sh所執行的操作是啟動httpd和mysql,並執行/bin/bash檔案。

  • 編寫Dockerfile檔案,如下程式碼所示:
# vi Dockerfile以下是Dockerfile檔案包含的內容FROM feodra21-apache-php-mysql:latestRUN git clone https://github.com/jinguojie-loongson/loongson-app.gitRUN rm -rf /var/www/html/appRUN cp -rf /loongson-app /var/www/html/appRUN /bin/sh -c ' /run.sh && sleep 2 && mysql -u root -e " source /var/www/html/app/sql/sql.txt " 'RUN cp -rf /var/www/html/app/data /opt/dataRUN chmod 777 /opt/data -RADD run.sh /RUN chmod 777 /run.shCMD ["/run.sh"]

 

  • Dockerfile檔案描述:          

           1、FROM:  FROM指令指定的基礎image,本文中指定已經建立好的fedora21-apache-php-mysql映象,格式為: 映象名稱:映象標籤(TAG)。           2、RUN:  RUN可以執行任何被基礎image支援的命令。            3、ADD: 構建指令,格式為:ADD <src> <dest>  從src複製檔案到container的dest路徑。本文中將上文提及到的run.sh複製到container的 / 目錄下。           4、CMD:設定指令,用於container啟動時指定的操作。本文中在container啟動時執行ADD複製的run.sh檔案。 執行Dockerfile檔案建立映象​

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

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

Removing intermediate container ac88f28d2a6bSuccessfully built 117acaf888ef
  • 驗證feodra21-loongson-app映象是否建立成功,程式碼如下:
# docker images
REPOSITORY                  TAG      IMAGE ID       CREATED         SIZE
feodra21-loongson-app       latest   117acaf888ef   5 minutes ago   988.1 MB
feodra21-apache-php-mysql   latest   0ac06cb06032   6 hours ago     857.5 MB
fedora21-base               21       65e35642a4da   27 hours ago    206.9 MB
feodra21-tools              latest   50f2048daeb1   28 hours ago    487.2 MB

通過檢視docker images的執行結果可以確定feodra21-loongson-app映象建立成功,fedora21-apache-php-mysql映象就是Dockerfile檔案中FROM 指定的基礎映象。
 
建立docker容器
 
建立好feodra21-loongson-app映象,就可以建立容器了,為了其他機器可以訪問容器,在建立容器的時候要做網路橋接,程式碼如下:

[[email protected] loongson-app]# docker run -i -t -d -p 8082:80 feodra21-loongson-app
da0c0158c364322d2218195ca3116e0e75f1aa4712b67c3ddb82a0f02084dc45

[[email protected] loongson-app]# docker ps 
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                  NAMES
da0c0158c364        feodra21-loongson-app   "/app-run.sh"       6 seconds ago       Up 5 seconds        0.0.0.0:8082->80/tcp   drunk_mcnulty

[[email protected] loongson-app]# docker attach da0c0158c364
[[email protected] usr]#

docker run命令中,-i 代表容器可以接收鍵盤上的輸入(主要用於在容器的命令上執行程式);-t 和 -i 配合使用;-d後臺執行容器,並返回容器ID;-p 指定容器暴露的埠;8082:80 將容器的80埠暴露出來,並橋接到宿主機的8082埠上。
 容器執行成功後可以看見一個明顯的變化,就是命令列提示符已經由本機的機器名稱(localhost)變成了容器的ID(da0c0158c364)。
 
至此,龍芯feodra21-loongson-app容器建立成功,並且開始正常運行了!
 
驗證Apache和mysql是否正常啟動,具體步驟如下:

[[email protected] usr]# ps aux | grep mysql
root         7  0.1  0.0   4496  2608 ?        S    12:21   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql
mysql      122  1.0  1.7 1305104 137936 ?      Sl   12:21   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root       154  0.0  0.0   3552   528 ?        S+   12:22   0:00 grep --color=auto mysql
[[email protected] usr]# ps aux | grep httpd
root         8  1.8  0.2  49376 19680 ?        S    12:21   0:00 /usr/sbin/httpd
apache     134  0.0  0.1  49376  9440 ?        S    12:21   0:00 /usr/sbin/httpd
apache     135  0.0  0.1  49376  9440 ?        S    12:21   0:00 /usr/sbin/httpd
apache     136  0.0  0.1  49376  9440 ?        S    12:21   0:00 /usr/sbin/httpd
apache     137  0.0  0.1  49376  9440 ?        S    12:21   0:00 /usr/sbin/httpd
apache     138  0.0  0.1  49376  9440 ?        S    12:21   0:00 /usr/sbin/httpd
root       156  0.0  0.0   3552   512 ?        S+   12:22   0:00 grep --color=auto httpd

可見Apache和mysql正常啟動了。
 
驗證mysql資料庫指令碼是否正常執行,具體步驟如下:

[[email protected] usr]# mysql -u root
MariaDB [(none)]> use app
MariaDB [app]> select id, name from app;
+--------+--------------+
| id     | name         |
+--------+--------------+
|      1 | WPS Office   |
|      2 | QQ           |
|      3 | 掃雷         |
|      4 | Photoshop    |
|      5 | 百度盤       |
|      6 | 同花順       |
| 999999 | 應用公社     |
+--------+--------------+






驗證data目錄是否正常複製到/opt目錄下,具體步驟如下:

[[email protected] usr]# cd /opt/
[[email protected] opt]# ll
total 4
drwxrwxrwx 7 root root 4096 Sep 28 12:14 data
[[email protected] opt]# cd data
[[email protected] data]# ll
total 20
drwxrwxrwx 2 root root 4096 Sep 28 12:14 app
drwxrwxrwx 2 root root 4096 Sep 28 12:14 hot
drwxrwxrwx 2 root root 4096 Sep 28 12:14 icon
drwxrwxrwx 2 root root 4096 Sep 28 12:14 screen
drwxrwxrwx 2 root root 4096 Sep 28 12:14 tmp





可見data目錄成功複製到/opt目錄下,並且許可權修改成功。
 
容器內、宿主機、區域網測試:
 
容器內: w3m http://localhost/app/php/index.php
宿主機: http://localhost:8082/app/php/index.php
區域網: 
 
 

Screenshot-龍芯應用公社_-_Chromium.png


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

1.png