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