STEP 1. VM 환경 세팅


  • Docker 설치

### STEP1. old version 도커 제거

$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine


### STEP2. Set up Repository

$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo



### STEP3. Install Docker Engine && Start Docker

$ yum update -y && yum install -y docker-ce docker-ce-cli containerd.io
$ systemctl restart docker && systemctl enable --now docker


  • Docker 상태 및 버전 확인

$ sudo systemctl status docker
$ sudo docker version


  • Pull Image && Run Image (Open JDK 8)

$ sudo docker pull registry.access.redhat.com/ubi8/openjdk-8:1.14-3

$ sudo docker run -it -d --privileged -v /etc/localtime:/etc/localtime:ro -e TZ=Asia/Seoul -p 55432:55432 --name weasyM_RHEL8 registry.access.redhat.com/ubi8/openjdk-8:1.14-3 /bin/bash

>> -v /etc/localtime:/etc/localtime:ro -e TZ=Asia/Seoul (컨테이너 내부 서버시간 UTC+9 로 설정)
>> -p 포트포워딩 설정

### container ID 확인 후 root 계정으로 접속 ###

$ sudo docker ps -al
$ sudo docker exec -it --user root {container_ID} /bin/bash

### OS 확인 (RHEL 8.6) ###
$ grep . /etc/*-release




STEP 2. 컨테이너 내부 환경 설정


  • 편의를 위한 YUM 설치 및 저장소 경로 변경 & 저장소 변경 (컨테이너 내부)

$ microdnf install -y yum yum-utils
$ microdnf upgrade --refresh -y

## 명령을 (ps, netstat, vi) 위한 패키지들 설치 ##

$ yum install -y procps net-tools vi

## Mirrorlist 에러 시 (CentOS8)

$ sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
$ sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*


  • 컨테이너 내부로 파일 전송
    • 방법 1. VM으로 FTP 전송 & weasyM 설치 tar파일 컨테이너 내부로 전송
    • 방법 2. 편의 상 설치 된 weasyM을 NFS 공유폴더 설정 & 전송

## 컨테이너 환경에서 EXIT ##
$ exit

## Docker cp 명령을 사용하여 컨테이너 내부로 파일 전송 ##
$ docker cp {weasyM 폴더 절대경로} {컨테이너ID}:/{이동시킬 Directory}

## NFS 사용 시 ##
$ docker cp {NFS Server IP}:/{directory} {컨테이너ID}:/{Directory}




STEP 3. 컨테이너 내부 환경에 weasyM 설치


  • weasyM OS 설정 - 컨테이너 내부 OS 환경 설정

$ docker exec -it --user root {컨테이너 ID} /bin/bash

$ vi /etc/security/limits.conf

-INSERT-

...

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

:wq


$ vi /etc/sysctl.conf

-INSERT-

...

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 104857600
net.core.rmem_max = 33554432
net.core.wmem_default = 104857600
net.core.wmem_max = 33554432
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.conf.all.arp_notify = 1
net.ipv4.tcp_rmem = 4096 8388608 33554432
net.ipv4.tcp_wmem = 4096 8388608 33554432
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_max_syn_backlog = 30000

:wq

$ sysctl -p


  • 필수 패키지 설치

$ yum install -y libtirpc
$ yum install -y python3
$ yum install -y libicu
$ yum install -y libxslt
$ yum install -y glibc-all-langpacks



$ yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

$ yum install -y postgresql14 \
postgresql14-server \
postgresql14-contrib \
postgresql14-docs \
postgresql14-plperl \
postgresql14-plpython3

## 패키지 설치 확인 ##

$ rpm -qa | grep postgresql


  • PostgreSQL 디렉터리 및 환경 설정 & 시작

$ mkdir /data
$ mkdir /data/pgsql
$ mkdir /data/pgsql/14
$ mkdir /data/pgsql/14/data
$ chown -R postgres:postgres /data

$ su postgres -

bash-4.4$ vi ~/.bash_profile

## bash_profile 수정 ##

#PGDATA=/var/lib/pgsql/14/data
export PGDATA=/data/pgsql/14/data
export PATH=/usr/pgsql-14/bin:$PATH
export PS1="[\u@\h \w]\\$ "

bash-4.4$ source ~/.bash_profile

$ initdb

....~

pg_ctl -D /data/pgsql/14/data -l logfile start

...

$ cd /data/pgsql/14/data

## PostgreSQL 접속 환경 설정 (pg_hba.conf, postgresql.conf)
$ vi pg_hba.conf

-INSERT-

... 중략 ...

# IPv4 local connections:
host all all 0.0.0.0/0 trust

:wq

$ vi postgresql.conf

-INSERT-

... 중략 ...

# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432

:wq

$ pg_ctl -D /data/pgsql/14/data -l logfile start
$ pg_ctl -D /data/pgsql/14/data -m immediate stop


  • Timezone 수정

$ microdnf install -y tzdata
$ export TZ='Asia/Seoul'
$ date


  • 이후 컨테이너 환경에서 weasyM 설치 순서는 동일 (가이드 참고)