Baram-v6 도커(Docker) 만들기

넥스트폼이 개발한 비압축성/열전달 해석을 위한 nextFoam을 사용하는 Graphic User Interface 프로그램인 Baram-v6의 도커를 만드는 방법이다.

앞의 글 'OpenFOAM 도커(Docker) 만들기'에서 만든 ut18-of6 이미지로부터 시작한다.


1. 도커 시작

> docker run --rm -it -v $PWD:/home/myDocker/hostUser -w /home/myDocker ut18-of6 

터미널에서 홈 폴더에서 위의 명령을 실행하면 터미널이 우분투 18.04에 OpenFOAM-6이 설치된 환경이 된다.

여기에서 nextfoam, cfMesh, Baram GUI를 설치한다. GUI 동작을 위해 gtk, vtk, vte를 설치하고 몇 가지 그래픽 관련 라이브러리를 설치할 것이다.

왜 그런지 이유는 모르겠으나 도커에서 오픈폼 환경에 한가지 문제가 있다. 'echo $USER' 명령을 하면 아무것도 나타나지 않는다. 이 때문에 오픈폼의 환경 설정이 이상해지고 nextFoam 설치에 문제가 발생한다. 그래서 도커에서 /home/myDocker/.bashrc 파일에 'export USER=myDocker'라는 한줄을 오픈폼 환경 설정 앞줄에 추가해 준다.

--------------------------------------------
...

export USER=myDocker
source /opt/openfoam6/etc/bashrc
...
--------------------------------------------

그리고 'source .bashrc'를 실행한다.

도커의 홈폴더(/home/myDocker)에 다음과 같이 몇 개의 폴더를 생성한다.

> mkdir OpenFOAM
> mkdir OpenFOAM/myDocker-6
> mkdir OpenFOAM/myDocker-6/src
> mkdir OpenFOAM/myDocker-6/GUI

공유폴더인 /home/myDocker/hostUser 의 어딘가 있는 nextFoam6, cfMesh 폴더를 .../myDocker-6/src 폴더에 복사한다.  Baram-v6.0.4 폴더는 .../myDocker-6/GUI 폴더에 복사한다.


2. nextFoam, cfMesh 설치

다음의 명령을 실행하면 설치가 완료 된다.

> cd ~/OpenFOAM/myDocker-6/src/nextFoam6
> wclean all
> ./Allwmake 
> cd ~/OpenFOAM/myDocker-6/src/cfMesh
> ./Allwclean
> ./Allwmake


3. Baram GUI 설치

> cp -r ~/OpenFOAM/myDocker-6/GUI/Baram-v6.0.4 $FOAM_USER_APPBIN/Baram-v6
> mv $FOAM_USER_APPBIN/Baram-v6/Baram $FOAM_USER_APPBIN/
> mkdir ~/.local
> mkdir ~/.local/share

$FOAM_USER_APPBIN/Baram 파일을 수정한다.

----------------------------------------------------------
#!/bin/bash
cd ${0%/*} || exit 1
./Baram-v6/Baram.py  # ./Baram.py is original
----------------------------------------------------------

$FOAM_USER_APPBIN 폴더에 Baram 파일이 있어 따로 path 지정 없이 실행할 수 있다. 

~/.local/share 폴더는 Baram 구동시 gtk warning이 발생해서 만들어 준다.

이렇게 하면 Baram은 구동되는데 vtk를 이용한 그래픽 작업시 openGL 관련 에러가 발생한다. 그래서 openGL 관련 라이브러리 때문에 nvidia driver를 설치한다. nvidia driver 전체를 설치할 필요는 없을 것 같은데,  무엇이 필요한지 몰라서 그냥 전체를 설치한다. 

> sudo apt-get install -y nvidia-340

(ubuntu-16.04 에서는 nvidia-304를 설치하면 된다.)


4. Docker 저장

이 상태에서 도커를 빠져 나오면 지금까지 모든 결과가 사라져버린다. 따라서 다른 이름으로 이미지를 저장한다.

다른 터미널을 연다. 여기서

> docker ps

명령을 치면 현재 실행중인 것들이 표시된다. 여기서 CONTAINER ID를 확인하고 'commit <ID> <image name>' 명령을 통해 baram:6.0 이란 새로운 이미지를 만든다. 

> docker commit b53275d217d2 baram:6.0

이미지 생성이 끝나면 원래 터미널에서 exit 명령으로 docker를 끝낸다.


5. Baram 실행 - 리눅스

이제 그래픽 사용 옵션으로 도커를 시작한다.

> docker run --rm -it -v $PWD:/home/myDocker/hostUser -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY -w /home/myDocker baram:6.0

도커가 시작되면 터미널에서 Baram을 실행하면 GUI 가 나타난다. 

명령어가 너무 길어 사용이 힘드니  ~/.bashrc 파일에 alias를 만들어 준다.


----------------------------------------------------------
...

alias baram6Docker='docker run --rm -it -v /home/bykim:/home/myDocker/hostUser -w /home/myDocker/hostUser -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY baram:6.0'

...
----------------------------------------------------------

이제 부터는 터미널에서 baram6Docker 만 실행하면 된다.


6. save, load

> docker save -o ImageOfBaram6.tar baram:6.0

위와 같이 실행하면 ImageOfBaram6.tar 라는 파일이 생성된다.

다른 컴퓨터에서

> docker load -i ImageOfBaram6.tar

위와 같이 실행하면 도커 이미지가 만들어 진다.


7. 윈도우즈에서 Baram 실행

리눅스에서 만든 이미지를 윈도우로 가져왔다면 도커 실행 명령은 다음과 같이 된다.

> docker run --rm -it -v $PWD:/home/myDocker/hostUser -e DISPLAY=192.158.56.7:0.0 -w /home/myDocker baram:6.0

Docker Quickstart Terminal에서 위의 명령을 입력하면 된다. 입력이 너무 길어서 불편하기 때문에 임의의 실행파일(예를 들어 runDocker 파일)을 만들어 위의 내용을 적어 두고 터미널에서 이 파일을 실행하면 간단히 사용할 수 있다.

아니면 baram6를 백그라운드에서 실행해 놓고 필요할 때마다 exec 명령을 통해 사용할 수도 있다.

처음에 아래와 같은 명령으로 baram6를 백그라운드로 실행한다.

> docker run --name baram6 -it -d -v $PWD:/home/myDocker/hostUser -e DISPLAY=192.157.56.7:0.0 -w /home/myDocker baram:6.0 /bin/bash 

위와 같이 -d 옵션으로 실행하고 'docker ps' 명령으로 확인하면 현재 baram6라는 이름의 도커가 실행되고 있음을 알 수 있다.

이 상태에서 필요할 때 다음과 같이 실행할 수 있다.

> docker exec -it baram6 /bin/bash



댓글

이 블로그의 인기 게시물

BARAM 설치가이드(WINDOW)

BARAM 설치가이드(LINUX)