龙芯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镜像,就可以创建容器了,为了其他机器可以访问容器,在创建容器的时候要做网络桥接,代码如下:

[root@localhost loongson-app]# docker run -i -t -d -p 8082:80 feodra21-loongson-app
da0c0158c364322d2218195ca3116e0e75f1aa4712b67c3ddb82a0f02084dc45

[root@localhost 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

[root@localhost loongson-app]# docker attach da0c0158c364
[root@da0c0158c364 usr]#

docker run命令中,-i 代表容器可以接收键盘上的输入(主要用于在容器的命令上运行程序);-t 和 -i 配合使用;-d后台运行容器,并返回容器ID;-p 指定容器暴露的端口;8082:80 将容器的80端口暴露出来,并桥接到宿主机的8082端口上。
 容器运行成功后可以看见一个明显的变化,就是命令行提示符已经由本机的机器名称(localhost)变成了容器的ID(da0c0158c364)。
 
至此,龙芯feodra21-loongson-app容器创建成功,并且开始正常运行了!
 
验证Apache和mysql是否正常启动,具体步骤如下:

[root@da0c0158c364 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
[root@da0c0158c364 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数据库脚本是否正常执行,具体步骤如下:

[root@da0c0158c364 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目录下,具体步骤如下:

[root@da0c0158c364 usr]# cd /opt/
[root@da0c0158c364 opt]# ll
total 4
drwxrwxrwx 7 root root 4096 Sep 28 12:14 data
[root@da0c0158c364 opt]# cd data
[root@da0c0158c364 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

猜你喜欢

转载自blog.csdn.net/weixin_40065369/article/details/85531465
今日推荐