본문 바로가기
Ubuntu/Ubuntu22.04

[lxc + rstudio server] 설정 및 접속

by 거인과난쟁이 2024. 8. 18.

https://modernity.tistory.com/entry/LXC-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%84%A4%EC%B9%98

 

[LXC] 리눅스 컨테이너 설치

우분투 22.04 LTS에 리눅스 컨테이너(LXC)를 설치하겠습니다. 여러 개의 웹 어플리케이션 설치와 관리를 효율적으로 하기위해서 입니다. #LXC 설치sudo apt updatesudo apt install lxc lxc-templates#우분투 컨테

modernity.tistory.com

컨테이너 사용과정에서 가장 어렵게 느껴지는 부분은 호스트 운영체제와 게스트 컨테이너의 네트워킹 설정입니다. 아래 과정에서 호스트 서버는 외부 접속이 가능한 상황, ssh 서버의 설치 운영을 전제합니다.

# ssh 서버 관련 설치
sudo apt update
sudo apt tasksel
sudo tasksel
## 화면 하단의 SSH server 선택하고 확인 버튼을 눌러 설치합니다.

# 만약 호스트 서버의 아이피를 모를경우,
sudo apt net-tools
ifconfig
## ssh 유저아이디@호스트서버아이피 로 외부에서 접속할 수 있어야 합니다.

rstudio-container라는 리눅스 컨테이너 안에 rstudio 서버를 설치하고 외부접속하는 과정입니다. 

# (호스트 서버에서) rstudio-container에 접속
sudo lxc-start -n rstudio-container
sudo lxc-attach -n rstudio-container

# (컨테이너 안에서) rstudio server 설치를 위한 배경 패키지 설치
apt update
apt install -y r-base gdebi-core wget

# RStudio Server 다운로드 및 설치(https://posit.co/download/rstudio-server 참조)
wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2023.06.0-421-amd64.deb
gdebi rstudio-server-2023.06.0-421-amd64.deb

# 컨테이너의 내부 아이피 확인
ip addr show eth0

# 호스트 서버로 나오기
exit

# 호스트 시스템에서 포트 포워딩 설정
sudo iptables -t nat -A PREROUTING -p tcp --dport 8787 -j DNAT --to-destination <컨테이너_IP>:8787

# 만약 ufw로 방화벽 관리중이라면
sudo ufw allow 8787/tcp

# 컨테이너가 실행될 때 자동으로 rstudio server가 시작하려면
systemctl enable rstudio-server

RStudio Server 접속: 웹 브라우저에서 http://<외부_IP>:8787로 접속하면 RStudio Server 로그인 페이지가 나타날 것입니다. (만약 사용자계정을 만들지 않았다면, adduser로 만들고, 사용자 아이디, 패스워드로 접속할 수 있습니다.)

  1. 포트 포워딩 규칙 영구 설정: 호스트 시스템에서 iptables 규칙을 영구적으로 저장하고 부팅 시 자동으로 로드되도록 설정합니다:
    Copy
    sudo apt-get install iptables-persistent sudo netfilter-persistent save sudo netfilter-persistent reload
  2. 부팅 시 포트 포워딩 규칙 적용: /etc/rc.local 파일을 생성하거나 수정하여 부팅 시 포트 포워딩 규칙이 적용되도록 합니다:
    Copy
    sudo nano /etc/rc.local
    파일에 다음 내용을 추가합니다 (기존 내용이 있다면 exit 0 위에 추가):
    bash
    Copy
    #!/bin/bash iptables -t nat -A PREROUTING -p tcp --dport 8787 -j DNAT --to-destination 10.0.3.30:8787 iptables -t nat -A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE exit 0
    파일을 저장하고 닫은 후, 실행 권한을 부여합니다:
    Copy
    sudo chmod +x /etc/rc.local
  3. 재부팅 테스트: 모든 설정이 완료되면 호스트 시스템을 재부팅하여 모든 것이 예상대로 작동하는지 확인합니다:
    Copy
    sudo reboot

이렇게 설정하면 호스트 컴퓨터가 재부팅된 후에도 컨테이너가 자동으로 시작되고, 컨테이너 내의 RStudio Server도 자동으로 실행되며, 필요한 포트 포워딩 규칙도 적용될 것입니다.