“龙芯杯”全国大学生计算机系统能力培养大赛总决赛胜利闭幕

yangkun 发表了文章 • 0 个评论 • 840 次浏览 • 2017-10-12 09:57 • 来自相关话题

“龙芯杯”全国大学生计算机系统能力培养大赛(以下简称“大赛”)是以学科竞赛推动专业建设、培养大学生创新能力为目标,面向高校大学生举办的全国性大赛。大赛旨在选拔未来我国计算机系统的设计、分析、优化与应用人才,激发学生的创新实践能力并培养其团队协作精神,进一步推动 ...查看全部
“龙芯杯”全国大学生计算机系统能力培养大赛(以下简称“大赛”)是以学科竞赛推动专业建设、培养大学生创新能力为目标,面向高校大学生举办的全国性大赛。大赛旨在选拔未来我国计算机系统的设计、分析、优化与应用人才,激发学生的创新实践能力并培养其团队协作精神,进一步推动计算机等相关专业教学改革,为高质量专业人才搭建交流、展示、合作的平台,助力我国高校与企业产学研合作的健康快速发展。
    大赛由教育部高等学校计算机类专业教学指导委员会主办,由教指委主任单位北京航空航天大学承办,龙芯中科技术有限公司、赛灵思(Xilinx)公司、进想科技(Imagination Technologies)公司、中国计算机学会体系结构专委会、安全可靠技术和产业联盟、机械工业出版社华章分社协办。
    本次大赛共有40多所高校近70支队伍参赛,参赛学生近280人,指导老师近140人。本次大赛通过初赛评选出20支队伍参加了9月23日在北京航空航天大学的全国总决赛。总决赛分为A、B两组进行,A组为初赛成绩排名前10的队伍,竞争一、二、三等奖。B组为初赛成绩第11至20名的队伍,均获得优胜奖,并竞争三个特别奖。
 
    第一届“龙芯杯”全国大学生计算机系统能力培养大赛颁奖典礼于9月24日在北京航空航天大学第二报告厅举行,北京航空航天大学计算机学院院长吕卫锋主持了本次颁奖仪式。北京航空航天大学党委副书记程基伟、教指委副主任王志英、教指委秘书长马殿富、龙芯中科技术有限公司总裁胡伟武、CCF体系结构专委会主任窦勇、机械工业出版社华章分社总编温莉芳、北京航空航天大学计算机学院副院长高小鹏分别 对大赛进行了致辞及总结发言。龙芯中科总裁胡伟武还为同学和老师作了《自主CPU发展道路》的精彩报告。
北京航空航天大学计算机学院院长吕卫锋主持了本次颁奖仪式

嘉宾致辞

龙芯中科总裁胡伟武发表演讲
 
    随后,现场领导及专家宣布了获奖名单并进行了颁奖,本次 “龙芯杯”全国大学生计算机系统能力培养大赛获奖名单如下:
    一等奖:清华大学一队
龙芯总裁胡伟武和获得一等奖的清华大学代表队合影
        
    二等奖:南京大学一队,西北工业大学二队,北京航空航天大学二队
二等奖获奖队合影
      
     三等奖:武汉大学,北京航空航天大学一队,南京航空航天大学一队,西北工业大学一队,南京大学二队,中国科学院大学一队
三等奖获奖队合影    
 
    优胜奖特别奖: CPU设计奖:中山大学、东北大学二队
                                 FPGA应用奖:天津大学
优胜奖特别奖获奖队合影
优胜奖特别奖获奖队合影 
 
    优胜奖:重庆大学,金陵科技学院,济南大学一队,济南大学二队,河北地质大学一队,东北大学一队。
优胜奖获奖队合影
    最后进行了大赛的交接仪式,由北京航空航天大学高小鹏老师将赛旗交到了南京大学袁春风老师的手中,第二届“龙芯杯”全国大学生计算机系统能力培养大赛将由南京大学来承办,希望明年再接再厉,通过比赛共同促进大学计算机教育的系统能力培养。
大赛交接仪式
本次大赛领导、专家与参赛师生合影留念
 

(精品)(Docker系列之七)龙芯Fedora21平台上传docker镜像到docker hub

huangxg 发表了文章 • 0 个评论 • 988 次浏览 • 2017-10-10 14:37 • 来自相关话题

 申请docker hub 帐号   打开 docker hub官网:https://hub.docker.com 进行注册   邮件 ...查看全部
Screenshot-1.png

 申请docker hub 帐号
 
打开 docker hub官网:https://hub.docker.com 进行注册

Screenshot.png

 
邮件激活后登录docker hub 点击 Create --> Create repository 创建一个仓库。
 


Screenshot.png

仓库名称:huangxg20171010/fedora21-base
huangxg20171010是帐号,fedora21-base在docker hub上是Repository,可以理解为镜像名称。
 
在本机登录hub帐号:
# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: huangxg20171010
Password:
Login Succeeded

 
将本机已经存在的镜像名称做格式化,保证和仓库名称:huangxg20171010/fedora21-base 一致,操作如下:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
fedora21-base 21 65e35642a4da 12 days ago 206.9 MB

# docker tag fedora21-base:21 huangxg20171010/fedora21-base:20170726
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
fedora21-base 21 65e35642a4da 12 days ago 206.9 MB
huangxg20171010/fedora21-base 20170726 65e35642a4da 12 days ago 206.9 MB

使用 docker push 将镜像上传至hub上,操作如下:
# docker push huangxg20171010/fedora21-base:20170726
The push refers to a repository [docker.io/huangxg20171010/fedora21-base]
409f8b08daf6: Layer already exists
20170726: digest: sha256:6ec30e213ad3df532c8cad07985c7a522c08e3b1ed7ac491e60156b512484b63 size: 528

 
上传一个tag为latest的镜像,操作如下:
# docker tag fedora21-base:21 huangxg20171010/fedora21-base
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
fedora21-base 21 65e35642a4da 12 days ago 206.9 MB
huangxg20171010/fedora21-base 20170726 65e35642a4da 12 days ago 206.9 MB
huangxg20171010/fedora21-base latest 65e35642a4da 12 days ago 206.9 MB

# docker push huangxg20171010/fedora21-base
The push refers to a repository [docker.io/huangxg20171010/fedora21-base]
409f8b08daf6: Layer already exists
latest: digest: sha256:6ec30e213ad3df532c8cad07985c7a522c08e3b1ed7ac491e60156b512484b63 size: 528

 
验证是否可以正常pull镜像,操作如下:
# docker rmi huangxg20171010/fedora21-base
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
fedora21-base 21 65e35642a4da 12 days ago 206.9 MB
# docker pull huangxg20171010/fedora21-base
Trying to pull repository docker.io/huangxg20171010/fedora21-base ...
sha256:6ec30e213ad3df532c8cad07985c7a522c08e3b1ed7ac491e60156b512484b63: Pulling from docker.io/huangxg20171010/fedora21-base

Digest: sha256:6ec30e213ad3df532c8cad07985c7a522c08e3b1ed7ac491e60156b512484b63
Status: Downloaded newer image for docker.io/huangxg20171010/fedora21-base

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
fedora21-base 21 65e35642a4da 12 days ago 206.9 MB
huangxg20171010/fedora21-base latest 65e35642a4da 12 days ago 206.9 MB

 
通过docker hub 官网查看验证是否上传成功,操作如下:
  1. 打开 docker hub官网:https://hub.docker.com 登录。 
  2. 如下图所示,点击“DETAILS”。


Screenshot.png

      3. 如下图所示,点击“Tags”,表示两个镜像提交成功,其中一个镜像的tag是20170726,另一个镜像的tag是latest

Screenshot-1.png



总 结
 
按照本文方法,可以将做好的镜像上传至docker hub 上,便于其他宿主机下载使用。

哪位知道怎么编译 n64 的 clisp ?我看 debian 有,但是我为什么编译不出来?

回复

jiangtao9999 发起了问题 • 1 人关注 • 0 个回复 • 533 次浏览 • 2017-10-03 19:36 • 来自相关话题

(精品)(Docker系列之五)龙芯Fedora21平台制作feodra21-loongson-app docker镜像

huangxg 发表了文章 • 0 个评论 • 839 次浏览 • 2017-09-28 20:46 • 来自相关话题

在按照本文的方式制作镜像之前,首先要先创建基础镜像feodra21-apache-php-mysql,可以参考: http://ask.loongnix.org/?/article/85    创建feodra21-loon ...查看全部
在按照本文的方式制作镜像之前,首先要先创建基础镜像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文件时会提示基础镜像不存在的错误。
以上论述可供开发者和部署服务器应用的管理员参考。

(精品)(Docker系列之三)龙芯Fedora21平台制作feodra21-tools docker镜像

huangxg 发表了文章 • 0 个评论 • 1095 次浏览 • 2017-09-26 20:05 • 来自相关话题

在按照本文的方式制作镜像之前,首先要先创建基础镜像fedora21-base,可以参考: http://ask.loongnix.org/?/article/81   创建feodra21-tools镜像的必要性 ...查看全部
在按照本文的方式制作镜像之前,首先要先创建基础镜像fedora21-base,可以参考:
http://ask.loongnix.org/?/article/81 


 创建feodra21-tools镜像的必要性
 
在已经创建的feodra21-base镜像中不包含常用命令,如:ifconfig、w3m、wget、vim等命令。当在feodra21-base容器的命令行中输入这些命令时,会有错误提示,如下:
[root@c6f646635bf1 /]# ifconfig
bash: ifconfig: command not found
[root@c6f646635bf1 /]# w3m
bash: w3m: command not found
[root@c6f646635bf1 /]# wget
bash: wget: command not found
[root@c6f646635bf1 /]# 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镜像,就可以创建容器了,代码如下:
[root@localhost tools]# docker run -i -t feodra21-tools
[root@34df78e5bf37 /]#
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文件时会提示基础镜像不存在的错误。
以上论述可供开发者和部署服务器应用的管理员参考。

(精品)(Docker系列之二)龙芯Fedora21平台制作docker镜像,并且解决vi乱码问题

huangxg 发表了文章 • 0 个评论 • 1498 次浏览 • 2017-09-25 15:32 • 来自相关话题

实验环境   本文的实验都是在龙芯3A3000机器上。 操作系统是loongnix(Fedora21)20170726版本, docker是1.12.2版本。   安装docker工具 ...查看全部
实验环境
 
本文的实验都是在龙芯3A3000机器上。
操作系统是loongnix(Fedora21)20170726版本,
docker是1.12.2版本。
 
安装docker工具
 
loongnix已经编译好docker的安装包,通过网络源即可安装:
# yum install docker
# service docker restart

制作docker镜像
 
制作镜像有很多种方法,本文使用了网络上提供的一个脚本文件,可以使制作镜像的过程简单、自动化的完成。
具体步骤如下:
  • 下载脚本:使用wget命令下载这个文件
# wget https://raw.githubusercontent.com/docker/docker/master/contrib/mkimage-yum.sh2017-09-25 14:59:53 - 已保存 “mkimage-yum.sh”
  • 为脚本增加可执行权限
# chmod a+x ./mkimage-yum.sh
  • 使用脚本制作龙芯的Docker镜像

# ./mkimage-yum.sh -y /etc/yum.conf fedora21-base

+ yum -c /etc/yum.conf --installroot=/tmp/mkimage-yum.sh.iDuoUP -y clean all

+ tar --numeric-owner -c -C /tmp/mkimage-yum.sh.iDuoUP .
+ docker import - fedora21-base:21
脚本执行结束后,通过docker images的输出可见,已经正常生成了一个镜像,名称为“fedora21-base”:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
fedora21-base 21 25bca293a55c 3 minutes ago 206.9 MB







创建docker容器并运行容器

有了fedora21-base镜像,现在就可以创建一个运行的容器了。使用docker run命令:
[root@localhost /]# docker run -i -t fedora21-base:21 /bin/bash
[root@f38d097e3d72 /]#


docker run命令中,-i 代表容器可以接收键盘上的输入(主要用于在容器的命令上运行程序);-t 和 -i 配合使用。
 容器运行成功后可以看见一个明显的变化,就是命令行提示符已经由本机的机器名称(localhost)变成了容器的ID(f38d097e3d72)。
 
至此,第一个龙芯容器创建成功,并且开始正常运行了!
 
d.png


现在可以在容器的命令行上输入任何命令了。注意,这样命令都是在容器的虚拟机中运行,不会对本机的文件系统造成任何破坏。
 
vi的乱码问题
 
通过上述方法创建的镜像,虽然可以正确的运行命令行,但是存在一个小问题,vi编辑器中不能正常显示中文
 
为了演示这个问题,创建一个文本文件,其中包含中文(可以通过本机的输入法切换到中文进行输入“龙芯中科”四个字):
# echo 龙芯中科 > 1.txt
使用 vi 打开
# vi 1.txt
这样就显示出了问题:vi中打开的文本文件,原来的四个中文字符,现在都是乱码:
~Y~J�中~Q






vi.png


 
解决方法
 
通过分析发现,问题原因是使用前文的脚本制作的镜像,缺少一些必要的文件,
具体来说:没有安装 glibc-common, LC_ALL 和 LANG 两项中编码格式不正确,在 /etc 目录下缺少 locale.conf 文件。对于一般用户,不需要具体了解这几个文件的含义。
 
解决方法是,再使用yum命令安装这些文件。具体步骤为:
# cd /usr/lib
# mkdir locale
# cd locale
# yum reinstall glibc-common -y

# echo zh_CN.UTF-8 > /etc/locale.conf



除此之外,每次进入容器或重启容器以后,还需在命令行执行如下两条命令:
export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8

验证效果
 

经过上面的配置后,再使用 vi 打开文件,可以看到已经能够正常显示中文了。
# vi /1.txt 

龙芯中科
~
~

 上面的操作,对于容器重新启动后仍然有效。

总 结
 
本文描述在龙芯平台上搭建docker环境、制作基本镜像的方法,并成功运行容器。
并且解决了在容器中 vi 不能正常显示中文的问题。
可供开发者和部署服务器应用的管理员参考。
 
 参考文献:
[1] 《 Docker 从零开始制作基础镜像[centos]》
     http://www.cnblogs.com/2018/p/4633940.html 
 
这个脚本自动的制作镜像,并且导入到本机的镜像仓库中。
原理仍然是 yum groupinstall "Core" --installroot="target" 
自动到源上去下载包,保证是一个干净的环境。
然后自动打tar包,执行docker import操作。
 

(精品)(Docker系列之一)龙芯Fedora21平台上解决docker 1.12.2退出问题

loongnix 发表了文章 • 0 个评论 • 1842 次浏览 • 2017-09-22 15:59 • 来自相关话题

   操作系统版本 loongnix(Fedora21) 20170726及以前版本,安装docker 1.12.2后,创建容器正常,但是docker stop容器会阻塞住,容器无法正常退出。 解 ...查看全部

docker.jpg

 
 操作系统版本

loongnix(Fedora21) 20170726及以前版本,安装docker 1.12.2后,创建容器正常,但是docker stop容器会阻塞住,容器无法正常退出。

解决方法

此问题是Docker官方版本缺少对MIPS平台的epoll支持。

现在龙芯已经修正这个问题,loongnix.org上已经提交了功能正常的docker包。

执行以下命令即可自动安装新版本的包。
# yum update docker
# service docker restart




 注意:测试的时候发现,只做service docker restart,并不能把所有docker进程都重新启动,需要手工kill所有的docker进程,才能保证新安装的文件得到运行。
具体步骤如下:
# ps aux | grep docker
loongson  7477  0.0  0.0 107488  1728 pts/5    S+   16:44   0:00 grep --color=auto docker
root     17693  0.0  0.2 492960  8560 ?        Ssl  9月21   0:54 /usr/libexec/docker/docker-containerd-current --listen unix:///run/containerd.sock --shim /usr/libexec/docker/docker-containerd-shim-current
root     17719  0.3  0.8 826192 35920 ?        Ssl  9月21   5:16 /usr/bin/dockerd-current --add-runtime oci=/usr/libexec/docker/docker-runc-current --default-runtime=oci --containerd /run/containerd.sock --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --selinux-enabled --log-driver=journald
root     17902  0.0  0.0 196512  2544 ?        Sl   9月21   0:00 /usr/libexec/docker/docker-containerd-shim-current fac1ee0c5de07257e5d65215abae4728bd08ec245026693d2b0444fe3f9d0745 /var/run/docker/libcontainerd/fac1ee0c5de07257e5d65215abae4728bd08ec245026693d2b0444fe3f9d0745 /usr/libexec/docker/docker-runc-current
root     17986  0.0  0.2 351472 11776 pts/2    Sl+  9月21   0:00 /usr/bin/docker-current attach fac1



ps 命令输出的每一行是一个docker进程,第2列是进程号,对所有这些进程号执行kill命令,例如:
# kill -9 17693 17719  17902 17986
 
执行kill命令后,务必再次执行ps命令,保证所有docker进程都已经被kill掉。
最后,再重新启动docker服务:
# service docker restart
这样才能确保运行的docker是新版本。
 
如果觉得上面的步骤实在太费事,有一个简单的方法,重新启动整个机器。

附:源码包链接

http://ftp.loongnix.org/os/loongnix/1.0/SRPMS/d/docker-1.12.2-5.git8f1975c.2.fc21.loongson.src.rpm

原始patch
From 57de5faf811e68fea1828faba6cc5ac2bb60474d Mon Sep 17 00:00:00 2001
Date: Thu, 21 Sep 2017 20:46:26 +0800
Subject: [PATCH] docker 1.12.2 fix stop failed on mips64le

---
.../archutils/epoll.go | 2 +-
.../archutils/epoll_mips64le.go | 73 ++++++++++++++++++++++
2 files changed, 74 insertions(+), 1 deletion(-)
create mode 100644 containerd-0366d7e9693c930cf18c0f50cc16acec064e96c5/archutils/epoll_mips64le.go

diff --git a/containerd-0366d7e9693c930cf18c0f50cc16acec064e96c5/archutils/epoll.go b/containerd-0366d7e9693c930cf18c0f50cc16acec064e96c5/archutils/epoll.go
index 3f08d8f..bca5015 100644
--- a/containerd-0366d7e9693c930cf18c0f50cc16acec064e96c5/archutils/epoll.go
+++ b/containerd-0366d7e9693c930cf18c0f50cc16acec064e96c5/archutils/epoll.go
@@ -1,4 +1,4 @@
-// +build linux,!arm64
+// +build linux,!arm64,!mips64le

package archutils

diff --git a/containerd-0366d7e9693c930cf18c0f50cc16acec064e96c5/archutils/epoll_mips64le.go b/containerd-0366d7e9693c930cf18c0f50cc16acec064e96c5/archutils/epoll_mips64le.go
new file mode 100644
index 0000000..524f0cc
--- /dev/null
+++ b/containerd-0366d7e9693c930cf18c0f50cc16acec064e96c5/archutils/epoll_mips64le.go
@@ -0,0 +1,73 @@
+// +build linux,mips64le
+
+package archutils
+
+// #include <sys/epoll.h>
+/*
+int EpollCreate1(int flag) {
+ return epoll_create1(flag);
+}
+
+int EpollCtl(int efd, int op,int sfd, int events, int fd) {
+ struct epoll_event event;
+ event.events = events;
+ event.data.fd = fd;
+
+ return epoll_ctl(efd, op, sfd, &event);
+}
+
+struct event_t {
+ uint32_t events;
+ int fd;
+};
+
+struct epoll_event events[128];
+int run_epoll_wait(int fd, struct event_t *event) {
+ int n, i;
+ n = epoll_wait(fd, events, 128, -1);
+ for (i = 0; i < n; i++) {
+ event[i].events = events[/i].events;
+ event.fd = events.data.fd;
+ }
+ return n;
+}
+*/
+import "C"
+
+import (
+ "fmt"
+ "syscall"
+ "unsafe"
+)
+
+// EpollCreate1 calls a C implementation
+func EpollCreate1(flag int) (int, error) {
+ fd := int(C.EpollCreate1(C.int(flag)))
+ if fd < 0 {
+ return fd, fmt.Errorf("failed to create epoll, errno is %d", fd)
+ }
+ return fd, nil
+}
+
+// EpollCtl calls a C implementation
+func EpollCtl(epfd int, op int, fd int, event *syscall.EpollEvent) error {
+ errno := C.EpollCtl(C.int(epfd), C.int(syscall.EPOLL_CTL_ADD), C.int(fd), C.int(event.Events), C.int(event.Fd))
+ if errno < 0 {
+ return fmt.Errorf("Failed to ctl epoll")
+ }
+ return nil
+}
+
+// EpollWait calls a C implementation
+func EpollWait(epfd int, events syscall.EpollEvent, msec int) (int, error) {
+ var c_events [128]C.struct_event_t
+ n := int(C.run_epoll_wait(C.int(epfd), (*C.struct_event_t)(unsafe.Pointer(&c_events))))
+ if n < 0 {
+ return int(n), fmt.Errorf("Failed to wait epoll")
+ }
+ for i := 0; i < n; i++ {
+ events.Fd = int32(c_events.fd)
+ events.Events = uint32(c_events[i].events)
+ }
+ return int(n), nil
+}
--
2.1.0[/i]


ld 的问题哪位知道怎么回事?

回复

jiangtao9999 发起了问题 • 1 人关注 • 0 个回复 • 841 次浏览 • 2017-09-17 15:33 • 来自相关话题

unshare 不能用

回复

libresoft 发起了问题 • 1 人关注 • 0 个回复 • 747 次浏览 • 2017-09-16 10:52 • 来自相关话题

龙芯1C的usb otg控制器问题

回复

wangyu1 发起了问题 • 1 人关注 • 0 个回复 • 366 次浏览 • 2017-09-05 19:56 • 来自相关话题