이번엔 local이 아닌 AWS EC2에서 시도해보자
1. 해당 EC2 실행
전에 설정했던 EC2와 다른 점 (이건 사실상 관련이 없음)
2. PuTTY로 local에서 접속하기 (탄력적 IP가 아니기 때문에 ip는 다시 시작하면 바뀌게 된다.)
3. ubuntu에 docker 설치하기
1) root 권한으로 변경
sudo su
Ubuntu 에 Docker 설치 (참고 블로그)
2) 우분투 시스템 패키지 업데이트
apt-get update
3) 필요한 패키지 설치
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
4) Docker의 공식 GPG키 추가
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo apt-key add -
5) Docker의 공식 apt 저장소 추가
add-apt-repository "deb [arch=amd64] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable"
6) 시스템 패키지 업데이트
apt-get update
7) Docker 설치
apt-get install docker-ce docker-ce-cli containerd.io
8) docker 설치 확인
docker 실행 상태 확인
sudo systemctl status docker
4. docker에서 ubuntu 다운받기
docker pull ubuntu
5. docker 이미지를 Container 파일로 생성 및 실행 (이때 port 번호도 부여하기)
docker run -it -p 5080:5080 --name mynovnc ubuntu
6. docker 우분투 업데이트
apt-get update
7. noVNC 설치 및 관련 설정들 (꽤 오래걸림)
apt install xfce4-goodies tightvncserver novnc websockify python3-numpy build-essential net-tools curl git software-properties-common -y
8. vncserver 실행
vncserver
명령을 실행하여 VNC 액세스 암호를 설정하고 초기 구성 파일을 만들고 VNC 서버 인스턴스를 시작하는 단계이다.
암호는 6~8자 사이여야 합니다. 8자 이상의 암호는 자동으로 잘린다.
오류 발생 (거의 처음 실행할 때는 오류가 항상 난다.)
추측 : 환경 변수를 설정하지 않았기 때문에 발생
해결과정
1) 현재 사용자의 이름을 환경 변수에 추가하기
echo "export USER=$USER" >> ~/.bashrc
2) source 명령어 실행
source 명령어는 설정 파일을 로드할 때 리부팅 없이 즉시 적용하기 위해 사용하는 명령어
source ~/.bashrc
다시 시도
잘 실행 된다.
암호 설정해주기
+) bashrc 란?
+) source 명령어
9. 포트 5901에서 실행 중인 VNC 서버 인스턴스 중지
vncserver -kill :1
VNC 서버 구성 방식을 변경할 예정
10. xstartup 파일을 수정하기 전에 원본을 백업
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
11. 새 xstartup 파일을 만들고 nano와 같은 텍스트 편집기에서 열기
nano ~/.vnc/xstartup
nano가 없다고 하면 nano를 설치해주기
apt-get install nano
다시 시도하면 이렇게 창이 새로 열린다.
12. 다음 파일에 내용 추가
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
exec /usr/bin/startxfce4 &
# 아래 내용 추가 하였음
#!/bin/sh
autocutsel -fork
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:Unity"
export XDG_MENU_PREFIX="gnome-flashback-"
unset DBUS_SESSION_BUS_ADDRESS
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check --debug &
13. 파일을 실행 가능하게 만들기
chmod +x ~/.vnc/xstartup
VNC 서버가 새로운 시작 파일을 제대로 사용할 수 있도록 하는 것
14. 다시 vncserver 실행
구성이 완료되면 로컬 컴퓨터에서 VNC 서버에 연결할 준비가 된 것이다.
15. 그다음 (무슨 설정인지는 모르겠음)
cd /etc/ssl ; openssl req -x509 -nodes -newkey rsa:2048 -keyout novnc.pem -out novnc.pem -days 365
16. ?? 설정
chmod 644 novnc.pem
17. 연결하기
websockify -D --web=/usr/share/novnc/ --cert=/etc/ssl/novnc.pem 5080 localhost:5901
18. 추가 확인 (websockify라는 프로세스 정보를 찾는 명령어)
ps -ef | grep websockify
- ps -ef : 프로세스 확인
- grep [WORD] : WORD를 찾아라 (여기서는 websockify)
ps -ef | grep websockify : ps -ef 명령어로 나온 출력물을 가지고 websockify 를 찾는다. (이때 |(파이프)가 두 명령어 사이를 연결)
19. 접속
포트 열려있는지 확인
netstat -lnp
https://[novnc가 설치된 서버의 ip 주소]:5080/vnc.html
https://[해당 EC2의 퍼블릭 IPv4 주소]:5080/vnc.html
그래도 접속이 안된다면…
해당 EC2의 보안 그룹 이름 알기 >>> [EC2]-[보안 그룹]-[인바운드 규칙 편집]
포트 번호 5080 추가해주기
해결 - 연결이 된다.
깨달은 점
필요한 ip는 각각의 이미지 서버의 ip가 아닌 이런 이미지들을 담고 있는 제일 밖의 서버 ip이다.
바로 전 글 'docker에서 ubuntu에 noVNC 설치하기' 에서의 참고 자료와 동일합니다.
'💻 개발 > 졸업과제' 카테고리의 다른 글
EC2의 desktop 접속하기 (0) | 2023.07.24 |
---|---|
private docker registry에 local에서 생성한 desktop container 이미지 push하기 (0) | 2023.07.24 |
container에 desktop 설치하기 & 접속하기 (0) | 2023.07.24 |
s3와 Harbor를 활용한 docker registry 구축 (0) | 2023.07.10 |
docker에서 ubuntu에 noVNC 설치하기 (local) (0) | 2023.07.02 |