软件的安装¶
安装 Docker¶
To build the Docker container, Docker need to be installed:
please refer to Docker Installation Homepage
quick installation
$ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo apt-key fingerprint 0EBFCD88 $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
注解
if you have following error message:
$ docker images Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json: dial unix /var/run/docker.sock: connect: permission deniedplease do:
$ sudo groupadd docker $ sudo usermod -aG docker ${USER} $ You would need to loog out and log back (looks like reboot needed) in so that your group membership is re-evaluated
注解
if you get following error message:
$ docker container ls -a Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
please do:
$ sudo service docker start
check if the docker installation is good
$ docker version Client: Docker Engine - Community Version: 19.03.3 API version: 1.40 Go version: go1.12.10 Git commit: a872fc2f86 Built: Tue Oct 8 00:58:10 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.3 API version: 1.40 (minimum version 1.12) Go version: go1.12.10 Git commit: a872fc2f86 Built: Tue Oct 8 00:56:46 2019 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.10 GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339 runc: Version: 1.0.0-rc8+dev GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 docker-init: Version: 0.18.0 GitCommit: fec3683
安装 Docker Compose¶
To build the Docker Compose:
please refer to Docker compose Homepage
quick installation (Please check the latest stable version number)
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $ docker-compose --version docker-compose version 1.24.1, build 4667896b
安装 Charliecloud¶
The whole system requires to be run with Charliecloud. To install Charliecloud:
please refer to Charliecloud Homepage
quick installation
Use Spack to install as a example ( Please refer to Spack package management )
$ spack install pkg-config # This is bug fix $ spack install charliecloud + buildercheck if charliecloud installation is OK
$ ch-run --version 0.12~pre+59b5bfd
安装 Spack¶
了解详情,请点击这里
$ git clone https://github.com/spack/spack.git # Add spack/bin to "PATH" $ export PATH=/path/of/spack/bin:$PATH $ . /path/of/spack/share/spack/setup-env.sh $ spack --version 0.14.2-1486-b80d5e7
制作 Spack 镜像¶
如果本机(工作机器)无法连接互联网,需要找一台可以连入互联网的计算机,同样安装 Spack ,该台计算机将用于制作 Spack 的镜像软件仓库。
注解
两台计算机必须安装同样版本的 Spack!
在可以连入互联网的计算机上也安装好了 Spack 之后,开始在该计算机上下载安装 METplus 所需要的软件。
建立一个
specs.txt文件,列出所需软件:gcc@9.2.0 openmpi@3.1.6 netcdf-fortran@4.5.2%gcc@9.2.0 ^netcdf-c@4.7.3+parallel-netcdf ^hdf5@1.10.6+fortran
制作需要软件的镜像
$ spack mirror create -D -f specs.txt
制作完成后,所需软件包下载到如下目录:
$ home/xinzhang> tree -L 1 /glade/u/home/xinzhang/spack/var/spack/cache /glade/u/home/xinzhang/spack/var/spack/cache ├── autoconf ├── automake ├── gdbm ├── hdf5 ├── hwloc ├── libiconv ├── libpciaccess ├── libsigsegv ├── libtool ├── libxml2 ├── m4 ├── ncurses ├── netcdf-c ├── netcdf-fortran ├── numactl ├── openmpi ├── parallel-netcdf ├── perl ├── pkgconf ├── readline ├── _source-cache ├── util-macros ├── xz └── zlib 24 directories, 0 files
打包镜像目录,上传到需要安装软件的工作机器:
$ cd /glade/u/home/xinzhang/spack/var/spack $ tar -zcvf spack_mirror.tgz cache在工作机器上,设置 Spack 镜像目录
在工作机器上,将
spack_mirror.tgz文件解压到一个目录,如:$ mkdir -p /home/wrf/spack_mirror $ cd /home/wrf/spack_mirror $ tar xzvf ~/spack_mirror.tgz $ rm ~/spack_mirror.tgz设置 Spack 镜像目录
$ spack mirror add local_filesytem file:///home/wrf/spack_mirror/cache $ spack mirror list local_filesyetm file:///home/wrf/home/wrf/spack_mirror/cache
相关软件安装¶
安装编译器 gnu@9.2.0
设置当前编译器
$ spack compiler find ==> Added 1 new compiler to /home/wrf/.spack/linux/compilers.yaml gcc@4.8.5 ==> Compilers are defined in the following files: /home/wrf/.spack/linux/compilers.yaml $ cat /home/wrf/.spack/linux/compilers.yaml compilers: - compiler: spec: gcc@4.8.5 paths: cc: /usr/bin/gcc cxx: /usr/bin/g++ f77: /usr/bin/gfortran fc: /usr/bin/gfortran flags: {} operating_system: centos7 target: x86_64 modules: [] environment: unset: [] extra_rpaths: []
安装 gcc@9.2.0
$ spack install gcc@9.2.0 $ spack find ==> 16 installed packages -- linux-centos7-haswell / gcc@4.8.5 ---------------------------- autoconf@2.69 gcc@9.2.0 gmp@6.1.2 libsigsegv@2.12 m4@1.4.18 mpfr@3.1.6 perl@5.30.2 readline@8.0 automake@1.16.2 gdbm@1.18.1 isl@0.20 libtool@2.4.6 mpc@1.1.0 ncurses@6.2 pkgconf@1.7.3 zlib@1.2.11
装载 gcc@9.2.0
$ spack load gcc@9.2.0 $ which gfortran ~/spack/opt/spack/linux-centos7-haswell/gcc-4.8.5/gcc-9.2.0-tl6spk7vtzi2ywa3b2ev2hecrcrfuvuc/bin/gfortran $ gfortran --version GNU Fortran (Spack GCC) 9.2.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
将 gcc@9.2.0 加入 Spack
$ spack compiler find ==> Added 1 new compiler to /home/wrf/.spack/linux/compilers.yaml gcc@9.2.0 ==> Compilers are defined in the following files: /home/wrf/.spack/linux/compilers.yaml
安装 netcdf
$ spack install netcdf-fortran@4.5.2%gcc@9.2.0 ^netcdf-c@4.7.3+parallel-netcdf ^hdf5@1.10.6+fortran $ spack find ==> 39 installed packages -- linux-centos7-haswell / gcc@4.8.5 ---------------------------- autoconf@2.69 gcc@9.2.0 gmp@6.1.2 libsigsegv@2.12 m4@1.4.18 mpfr@3.1.6 perl@5.30.2 readline@8.0 automake@1.16.2 gdbm@1.18.1 isl@0.20 libtool@2.4.6 mpc@1.1.0 ncurses@6.2 pkgconf@1.7.3 zlib@1.2.11 -- linux-centos7-skylake_avx512 / gcc@9.2.0 --------------------- autoconf@2.69 hwloc@1.11.11 libtool@2.4.6 netcdf-c@4.7.3 parallel-netcdf@1.12.1 util-macros@1.19.1 automake@1.16.2 libiconv@1.16 libxml2@2.9.10 netcdf-fortran@4.5.2 perl@5.30.2 xz@5.2.5 gdbm@1.18.1 libpciaccess@0.13.5 m4@1.4.18 numactl@2.0.12 pkgconf@1.7.3 zlib@1.2.11 hdf5@1.10.6 libsigsegv@2.12 ncurses@6.2 openmpi@3.1.6 readline@8.0
-
$ spack load -r openmpi@3.1.6
安装 METviewer¶
-
在一台安装了Docker和又互联网连接的机器上,下载 METviewer Docker 镜像
制作 METviewer 的 Docker 镜像,存为
tar文件$ cd container-dtc-metviewer/METviewer $ docker image build -t metviewer . # 制作完成 $ docker image save metviewer -o metviewer.docker.image.tar
将该镜像文件上传到工作机器上 (同时也需要准备mysql的镜像文件),然后加载该镜像
$ docker image load -i metviewer.docker.image.tar 0683de282177: Loading layer [==================================================>] 244.9MB/244.9MB 5714bb8688ee: Loading layer [==================================================>] 173MB/173MB ec559b28281c: Loading layer [==================================================>] 1.65GB/1.65GB 3335b9f0667b: Loading layer [==================================================>] 2.56kB/2.56kB 1fa73ec3c2f2: Loading layer [==================================================>] 27.03MB/27.03MB 8872ec41f650: Loading layer [==================================================>] 13.93MB/13.93MB 989c6a32b856: Loading layer [==================================================>] 44.75MB/44.75MB 16fa149a25ac: Loading layer [==================================================>] 2.048kB/2.048kB Loaded image: metviewer:latest $ docker image load -i mysql5.7.docker.image.tar 13cb14c2acd3: Loading layer [==================================================>] 72.49MB/72.49MB 365386a39e0e: Loading layer [==================================================>] 338.4kB/338.4kB c3f46b20a0d3: Loading layer [==================================================>] 9.539MB/9.539MB 66c45123fd43: Loading layer [==================================================>] 4.2MB/4.2MB 61cbb8ea6481: Loading layer [==================================================>] 1.536kB/1.536kB 44853bb67274: Loading layer [==================================================>] 53.75MB/53.75MB 3a2464d8e0c0: Loading layer [==================================================>] 6.656kB/6.656kB 91ae264962fb: Loading layer [==================================================>] 3.584kB/3.584kB 8f0182ef7c8c: Loading layer [==================================================>] 313.1MB/313.1MB ac7657905788: Loading layer [==================================================>] 16.38kB/16.38kB c90a34afcab0: Loading layer [==================================================>] 1.536kB/1.536kB Loaded image: mysql:5.7 $ docker image ls -a REPOSITORY TAG IMAGE ID CREATED SIZE metviewer latest 85b75697b9ee 9 days ago 2.11GB mysql 5.7 9cfcce23593a 11 days ago 448MB
在工作机器上,下载 container-dtc-nwp 和 METviewer Docker 镜像
新建工作目录:
$ cd container-dtc-metviewer $ mkdir -p output $ mkdir -p mysql编辑
docker-compose的配置文件$ cd container-dtc-nwp/components/metviewer/ $ vi docker-compose.yaml修改路径:
db: image: mysql:5.7 container_name: mysql_mv ports: - "6603:3306" volumes: - /home/wrf/container-dtc-metviewer/output/metviewer/mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: mvuser tty: true # metviewer: image: metviewer container_name: metviewer ports: - "8080:8080" volumes: - /home/wrf/container-dtc-nwp/components/scripts:/scripts - /home/wrf/METout:/data - /home/wrf/container-dtc-metviewer/output/metviewer/output/xml:/opt/tomcat/webapps/metviewer_output/xml - /home/wrf/container-dtc-metviewer/output/metviewer/output/plots:/opt/tomcat/webapps/metviewer_output/plots - /home/wrf/container-dtc-metviewer/output/metviewer/output/data:/opt/tomcat/webapps/metviewer_output/data - /home/wrf/container-dtc-metviewer/output/metviewer/output/scripts:/opt/tomcat/webapps/metviewer_output/scripts links: - db:mysql_mv tty: true
启动 METviewer
$ cd container-dtc-nwp/components/metviewer/ $ docker-compose up -d Creating mysql_mv ... done Creating metviewer ... done
打开网页浏览器,输入网址 :http://localhost:8080/metviewer/metviewer1.jsp 或 http://10.86.41.176:8080/metviewer/metviewer1.jsp
注解
在线图形显示可能有问题,请使用右上角的图形保持功能