C++程序(STAPpp)的docker容器构建
安装docker
-
Centos 7上运行的docker要求操作系统为 64位,内核版本为 3.10 以上。
-
[root@centos ~]$ uname -r 3.10.0-1160.71.1.el7.x86_64
-
-
设置Linux内核的流量转发
-
[root@centos ~]$ cat <<EOF > /etc/sysctl.d/docker.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.ip_forward = 1 EOF
-
-
加载修改Linux内核参数的配置文件
-
[root@centos ~]$ modprobe br_netfilter [root@centos ~]$ sysctl -p /etc/sysctl.d/docker.conf
-
-
yum 安装docker-ce
-
[root@centos ~]$ yum list docker-ce --showduplicates | sort -r 错误:没有匹配的软件包可以列出 已加载插件:fastestmirror, langpacks * updates: mirrors.aliyun.com Loading mirror speeds from cached hostfile * extras: mirrors.aliyun.com * base: mirrors.aliyun.com #如上,当前仓库没有docker-ce安装包,需要配置yum源 [root@centos ~]$ curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@centos ~]$ yum clean all && yum makecache #查看可安装的docker版本信息 [root@centos ~]$ yum list docker-ce --showduplicates | sort -r #安装docker(我挑了个最新的) [root@centos ~]$ yum install docker-ce-23.0.0 -y
-
配置docker加速器
#创建并修改配置文件
[root@centos ~]$ mkdir -p /etc/docker
[root@centos ~]$ touch /etc/docker/daemon.json
# 道客云镜像加速
[root@centos ~]$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
#加载配置文件
[root@centos ~]$ systemctl daemon-reload
#设置开机自启
[root@centos ~]$ systemctl enable docker
#启动docker
[root@centos ~]$ systemctl restart docker
准备stappp代码
-
GitHub远端拉取
git clone git@github.com:xzhang66/STAPpp.git
-
从本地宿主机拷贝
scp -r stappp root@192.168.74.129:/home/eishin/
撰写Dockerfile
FROM centos:7.9.2009
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
RUN yum makecache fast
RUN yum install -y gcc gcc-c++ cmake3 make && mkdir /opt/build
WORKDIR /opt/build
COPY ../stappp/src /opt/src
RUN cmake3 ../src && cmake3 . -DCMAKE_BUILD_TYPE="Release" && make
ENTRYPOINT ["./stap++"]
生成镜像
[root@localhost stapppDocker]$ docker build -t "stappp_docker" -f /home/eishin/stapppDocker/Dockerfile /home/eishin/
运行并测试stappp容器
[root@localhost stapppDocker]$ docker run --name=homework -v /home/eishin/stappp/data:/opt/data stappp_docker /opt/data/homework.dat
TITLE : Cables to test STAP90
(7:40:14 on March 24, 2023, Friday)
C O N T R O L I N F O R M A T I O N
NUMBER OF NODAL POINTS . . . . . . . . . . (NUMNP) = 12
NUMBER OF ELEMENT GROUPS . . . . . . . . . (NUMEG) = 1
NUMBER OF LOAD CASES . . . . . . . . . . . (NLCASE) = 1
SOLUTION MODE . . . . . . . . . . . . . . (MODEX) = 1
EQ.0, DATA CHECK
EQ.1, EXECUTION
N O D A L P O I N T D A T A
NODE BOUNDARY NODAL POINT
NUMBER CONDITION CODES COORDINATES
1 1 1 1 0.00000e+00 0.00000e+00 0.00000e+00
2 1 1 1 1.50000e+01 0.00000e+00 0.00000e+00
3 0 0 1 3.00000e+00 0.00000e+00 0.00000e+00
4 0 0 1 6.00000e+00 0.00000e+00 0.00000e+00
5 0 0 1 9.00000e+00 0.00000e+00 0.00000e+00
6 0 0 1 1.20000e+01 0.00000e+00 0.00000e+00
7 0 0 1 0.00000e+00 4.00000e+00 0.00000e+00
8 0 0 1 3.00000e+00 4.00000e+00 0.00000e+00
9 0 0 1 6.00000e+00 4.00000e+00 0.00000e+00
10 0 0 1 9.00000e+00 4.00000e+00 0.00000e+00
11 0 0 1 1.20000e+01 4.00000e+00 0.00000e+00
12 0 0 1 1.50000e+01 4.00000e+00 0.00000e+00
EQUATION NUMBERS
NODE NUMBER DEGREES OF FREEDOM
N X Y Z
1 0 0 0
2 0 0 0
3 1 2 0
4 3 4 0
5 5 6 0
6 7 8 0
7 9 10 0
8 11 12 0
9 13 14 0
10 15 16 0
11 17 18 0
12 19 20 0
L O A D C A S E D A T A
LOAD CASE NUMBER . . . . . . . = 1
NUMBER OF CONCENTRATED LOADS . = 1
NODE DIRECTION LOAD
NUMBER MAGNITUDE
4 2 -7.00000e+03
E L E M E N T G R O U P D A T A
E L E M E N T D E F I N I T I O N
ELEMENT TYPE . . . . . . . . . . . . .( NPAR(1) ) . . = 1
EQ.1, TRUSS ELEMENTS
EQ.2, ELEMENTS CURRENTLY
EQ.3, NOT AVAILABLE
NUMBER OF ELEMENTS. . . . . . . . . . .( NPAR(2) ) . . = 22
M A T E R I A L D E F I N I T I O N
NUMBER OF DIFFERENT SETS OF MATERIAL
AND CROSS-SECTIONAL CONSTANTS . . . .( NPAR(3) ) . . = 1
SET YOUNG'S CROSS-SECTIONAL
NUMBER MODULUS AREA
E A
1 1.50000e+11 1.00000e-02
E L E M E N T I N F O R M A T I O N
ELEMENT NODE NODE MATERIAL
NUMBER-N I J SET NUMBER
1 1 7 1
2 3 8 1
3 4 9 1
4 5 10 1
5 6 11 1
6 2 12 1
7 1 3 1
8 3 4 1
9 4 5 1
10 5 6 1
11 6 2 1
12 7 8 1
13 8 9 1
14 9 10 1
15 10 11 1
16 11 12 1
17 7 3 1
18 8 4 1
19 9 5 1
20 4 10 1
21 5 11 1
22 6 12 1
TOTAL SYSTEM DATA
NUMBER OF EQUATIONS . . . . . . . . . . . . . .(NEQ) = 20
NUMBER OF MATRIX ELEMENTS . . . . . . . . . . .(NWK) = 170
MAXIMUM HALF BANDWIDTH . . . . . . . . . . . .(MK ) = 14
MEAN HALF BANDWIDTH . . . . . . . . . . . . . .(MM ) = 8
LOAD CASE 1
D I S P L A C E M E N T S
NODE X-DISPLACEMENT Y-DISPLACEMENT Z-DISPLACEMENT
1 0.00000e+00 0.00000e+00 0.00000e+00
2 0.00000e+00 0.00000e+00 0.00000e+00
3 -4.25316e-06 -5.09702e-05 0.00000e+00
4 -2.20633e-06 -9.56803e-05 0.00000e+00
5 4.30633e-06 -8.05603e-05 0.00000e+00
6 4.25316e-06 -4.18352e-05 0.00000e+00
7 1.96071e-05 -1.12000e-05 0.00000e+00
8 1.33071e-05 -6.21702e-05 0.00000e+00
9 7.07089e-07 -9.14743e-05 0.00000e+00
10 -9.52709e-06 -8.38210e-05 0.00000e+00
11 -1.79271e-05 -4.93019e-05 0.00000e+00
12 -2.21271e-05 -7.46667e-06 0.00000e+00
S T R E S S C A L C U L A T I O N S F O R E L E M E N T G R O U P 1
ELEMENT FORCE STRESS
NUMBER
1 -4.20000e+03 -4.20000e+05
2 -4.20000e+03 -4.20000e+05
3 1.57722e+03 1.57722e+05
4 -1.22278e+03 -1.22278e+05
5 -2.80000e+03 -2.80000e+05
6 -2.80000e+03 -2.80000e+05
7 -2.12658e+03 -2.12658e+05
8 1.02342e+03 1.02342e+05
9 3.25633e+03 3.25633e+05
10 -2.65823e+01 -2.65823e+03
11 -2.12658e+03 -2.12658e+05
12 -3.15000e+03 -3.15000e+05
13 -6.30000e+03 -6.30000e+05
14 -5.11709e+03 -5.11709e+05
15 -4.20000e+03 -4.20000e+05
16 -2.10000e+03 -2.10000e+05
17 5.25000e+03 5.25000e+05
18 5.25000e+03 5.25000e+05
19 -1.97152e+03 -1.97152e+05
20 1.52848e+03 1.52848e+05
21 3.50000e+03 3.50000e+05
22 3.50000e+03 3.50000e+05
S O L U T I O N T I M E L O G I N S E C
TIME FOR INPUT PHASE = 0.00000e+00
TIME FOR CALCULATION OF STIFFNESS MATRIX = 0.00000e+00
TIME FOR FACTORIZATION AND LOAD CASE SOLUTIONS = 0.00000e+00
T O T A L S O L U T I O N T I M E = 0.00000e+00
[root@localhost stapppDocker]$ ls ../stappp/data/
bar-6.dat exercise-2-5.dat homework.dat homework.out Input.data test_truss_22.dat truss.dat
镜像转移
-
搭建docker hub仓库,直接
docker push
和docker pull
; -
本地文件转移
[root@localhost eishin]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE stappp_docker latest 1c483d6fcafe 36 minutes ago 857MB [root@localhost stapppDocker]$ docker image save stappp_docker > /home/eishin/stappp_docker.tgz [root@localhost stapppDocker]$ docker load -i /home/eishin/stappp_docker.tgz