文章目录
1 编译前准备
本文假设已在目标机器上安装好了docker环境
1.1 下载并导入Euler OS镜像
访问Euler OS Repo网站,选择相应版本,进入到版本下的的docker_img
进行下载。本文使用aarch64的版本的镜像。
mkdir -p /data/euler_compile
wget https://repo.openeuler.org/openEuler-20.09/docker_img/aarch64/openEuler-docker.aarch64.tar.xz
wget https://repo.openeuler.org/openEuler-20.09/docker_img/aarch64/openEuler-docker.aarch64.tar.xz.sha256sum
# 检查文件完整性
sha256sum -c openEuler-docker.aarch64.tar.xz.sha256sum
# 输出如下即为正常
# openEuler-docker.aarch64.tar.xz: OK
# 导入镜像
docker load < openEuler-docker.aarch64.tar.xz
# 输出如下即为正常
# 7f9c8dfc39c9: Loading layer [==================================================>] # 607.1MB/607.1MB
# Loaded image: openeuler-20.09:latest
2 制作基础编译环境镜像
2.1 修改基础镜像dockerfile
FROM openeuler-20.09:latest
USER root
ENV LANG C.UTF-8
ARG ROOT_PASS="test"
RUN sed -e 's|baseurl=http://repo.openeuler.org/|baseurl=https://mirrors.huaweicloud.com/openeuler/|g' \
-e 's|gpgkey=http://repo.openeuler.org/|gpgkey=https://mirrors.huaweicloud.com/openeuler/|g' \
-i.bak \
/etc/yum.repos.d/openEuler.repo && \
yum -y update && \
yum install -y gcc gcc-c++ make cmake zlib-devel libffi-devel openssl-devel sqlite-devel unzip pciutils net-tools lapack lapack-devel blas blas-devel gcc-gfortran vim tar&& \
yum install -y openssh && \
sed -i "s/#Port 22/Port 36000/g" /etc/ssh/sshd_config && \
sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" && \
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" && \
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" && \
echo "root:${ROOT_PASS}"|chpasswd && \
yum clean all
CMD ["bash"]
2.2 打包镜像
假设目标镜像名为 gromacs_euler_os:compile_base
, 2.1节的dockerfile名为gromacs_euler_os_compile_base.dockerfile
docker build -t gromacs_euler_os:compile_base -f gromacs_euler_os_compile_base.dockerfile ./
3 制作编译环境镜像
3.1 修改编译镜像dockerfile
FROM gromacs_euler_os:compile_base
ARG GROMACS_DOWNLOAD_URL="ftp://ftp.gromacs.org/pub/gromacs/gromacs-2020.3.tar.gz"
ARG REGRESSIONTESTS_DOWNLOAD_URL="ftp://ftp.gromacs.org/regressiontests/regressiontests-2020.3.tar.gz"
ARG FFTW_DOWNLOAD_URL="http://www.fftw.org/fftw-3.3.8.tar.gz"
## 安装fftw
RUN mkdir -p /data/fftw/ && \
cd /data/fftw/ && \
curl -o fftw-3.3.8.tar.gz ${FFTW_DOWNLOAD_URL} && \
tar xf fftw-3.3.8.tar.gz && \
cd fftw-3.3.8 && \
./configure --enable-shared --enable-static --enable-float && \
make -j 12 && make install && \
cd / && rm -rf /data/fftw/ && \
ldconfig
## 安装grocmacs
RUN mkdir -p /data/gromacs/ && \
cd /data/gromacs/ && \
curl -o regressiontests-2020.3.tar.gz ${REGRESSIONTESTS_DOWNLOAD_URL} && \
tar xf regressiontests-2020.3.tar.gz && \
curl -o gromacs-2020.3.tar.gz ${GROMACS_DOWNLOAD_URL} && \
tar xf gromacs-2020.3.tar.gz && \
cd gromacs-2020.3 && \
mkdir build && \
cd build && \
export OMPI_ALLOW_RUN_AS_ROOT=1 && \
export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 && \
cmake .. -DGMX_FFT_LIBRARY=fftw3 -DCMAKE_BUILD_TYPE=Debug -DREGRESSIONTEST_PATH=/data/gromacs/regressiontests-2020.3 && \
make -j 24 && \
make check && \
make install && \
echo 'source /usr/local/gromacs/bin/GMXRC' >> ~/.bashrc && \
cd / && rm -rf /data/gromacs/ && \
ldconfig
3.2 打包镜像
假设目标镜像名为 gromacs_euler_os:kunpeng_only
, 3.1节dockerfile名为gromacs_euler_os_kunpeng_only.dockerfile
docker build -t gromacs_euler_os:kunpeng_only --network=host -f gromacs_euler_os_kunpeng_only.dockerfile ./
参考
- https://blog.csdn.net/ncdx111/article/details/79878098
- https://support.huaweicloud.com/instg-9000-A800_9000_9010/atlastrain_03_0008.html