[OCI] 개발 환경 가상 머신 생성 및 도커Cloud/OCI(Oracle Cloud Infrastructure)2024. 12. 3. 19:46
Table of Contents
개발 가상 환경을 만들고, 마이크로서비스 개발과 컨테이너 빌드, 쿠버네티스 접속 환경 설정 등 추후 진행할 모든 실습을 생성할 가상 머신에서 진행할 예정이다.
1. 개발 환경 가상 머신 생성 및 접속
1) 가상 머신 생성
내비게이션 메뉴 -> [Compute -> Instances]
Create instance 클릭
- Name : oci-demo-appdev
- VCN : OCI_DEMO
- Subnet : public subnet-OCI_DEMO (regional)
- SSH Key : 1장에서 만들었던 Public Key를 이용해도 되지만, Public Key와 Private Key를 새로 다운 받아 진행할 것이다.
(키 파일 이름을 인스턴스명으로 변경해 관리)
2) 개인키 권한 수정
chmod 400 <개인키 파일명>
3) 원격 접속
진행하는 PC의 OS가 Windows인 경우 Mobaxterm과 같은 프로그램을 이용해도 무방하다.
ssh -i ~/.ssh/id_rsa opc@<Instance Public IP>
2. 도커 설치 및 사용 방법 확인
1) 애드온 리포지터리 다운 및 도커 커뮤니티 에디션, CLI 설치
# 애드온 리포지터리 다운
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 도커 커뮤니티 에디션, 도커 CLI 설치
$ sudo yum install -y docker-ce docker-ce-cli
2) 도커 서비스 등록 및 활성화
# Docker 서비스 시작
$ sudo systemctl start docker
# Docker 서비스 활성화
$ sudo systemctl enable docker
# Docker 서비스 상태 확인
$ sudo systemctl status docker
3) 도커 버전 확인
$ sudo docker version
4) docker 그룹에 opc 사용자 추가
# docker 그룹에 opc 유저 추가
$ sudo usermod -aG docker opc
# 데몬 재실행
$ sudo systemctl restart docker
# 로그아웃
$ exit
# 원격 재접속
ssh -i <Privae Key> opc@<Instance Public IP>
# sudo 붙이지 않아도 명령 실행 가능
$ docker version
5) 도커 허브 로그인 및 이미지 검색
도커 허브 계정이 없다면 아래 링크에서 가입 후 진행한다.
# 도커 허브 로그인
$ docker login
Username: <Docker Hub ID 입력>
Password: <Docker Hub Password 입력>
# 오라클 리눅스 이미지 검색
$ docker search oraclelinux
6) nginx 웹 서버 컨테이너 생성
$ docker run -it --rm -d -p 8080:80 --name web nginx
- -i : (interactive) 사용자가 입출력을 할 수 있도록 한다.
- -t : (Pseudo-tty) 가상 터미널 환경을 에뮬레이션 한다.
-> -it 옵션으로 사용(컨테이너 내에서 터미널을 사용) - --rm : 컨테이너 내의 프로세스가 종료되면 컨테이너를 자동으로 삭제한다.
- -d : (Detached) 컨테이너를 Background에서 실행한다. (기본 값은 Foreground에서 실행)
(Foreground로 실행 시 컨테이너의 표준 입출력 로그 출력, 명령어 실행 불가) - -p : 포트 포워딩을 수행한다. 컨테이너 외부에서 온 트래픽을 컨테이너 내부의 포트로 전달할 수 있다.
(<호스트 포트:컨테이너 포트> 형식으로 사용) - --name : 컨테이너의 이름을 지정하며, 생략할 경우 도커가 자동으로 이름을 생성한다.
7) docker 추가 명령어
7-1) docker images
# 도커 로컬에 저장된 이미지 목록 확인
$ docker images
7-2) docker ps -a
# 현재 실행중인 컨테이너 목록 확인
$ docker ps -a
7-3) docker inspect <컨테이너명>
# 도커 객체(컨테이너, 이미지, 네트워크, 볼륨 등)에 대한 자세한 정보 출력
$ docker inspect web
7-4) docker exec
# 컨테이너 내 접근
$ docker exec -it <컨테이너명> /bin/bash
# 컨테이너 접근 후 바로 명령어 수행
$ docker exec -it <컨테이너명> <명령어>
# -w 옵션을 사용해 실행 중인 컨테이너의 작업 디렉터리를 변경 후 명령어 수행
$ docker exec -w <디렉터리 경로> <명령어>
8) nginx 컨테이너 접속
8-1) Security List 설정
VCN -> Security List
0.0.0.0 8080포트 접근 허용
보안 상 0.0.0.0/0 보다 IP 대역을 지정해 허용하는 것이 바람직하며, 꼭 그렇게 해야만 한다!
8-2) OS 방화벽 추가
# 8080 포트 추가
$ sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
# 방화벽 재로딩
$ sudo firewall-cmd --reload
# 방화벽 허용 포트 리스트 확인
$ sudo firewall-cmd --list-ports
8-3) 인스턴스 Public IP 확인 및 웹 접속
# 인스턴스 Public IP 확인
$ curl ifconfig.co
이외 OCI 콘솔에서 확인도 가능하다.
<Instance Public IP>:8080 으로 접속하면 nginx의 웰컴 페이지가 출력된다.
9. 로그 확인
docker logs 명령은 컨테이너가 생성한 로그 메시지를 출력 -> 컨테이너의 표준 출력 및 표준 오류에 기록된 내용을 확인
# web 컨테이너의 컨테이너 로그 출력
$ docker logs web
10. nginx 초기 페이지 수정 및 확인
10-1) web 컨테이너 중지
# web 컨테이너 중지
$ docker stop web
# 현재 실행 중인 컨테이너 출력
$docker ps -a
10-2) index.html 파일 수정
- 컨테이너 내부의 /usr/share/nginx/html/index.html 수정
- 호스트 머신의 디렉터리를 실행 중인 컨테이너에 매핑(=바인드 마운트)
모든 컨테이너가 동일한 디렉터리의 작업물을 사용해야 하는 경우 '바인드 마운트' 방법을 사용할 수 있다.
# 컨테이너 외부 호스트 머신
$ mkdir ~/demo-content
$ vi ~/demo-content/index.html
# -v 옵션으로 바인드 마운트
$ docker run -it --rm -d -p 8080:80 --name web -v ~/demo-content:/usr/share/nginx/html nginx
# 현재 실행 중인 컨테이너 확인
$ docker ps -a
10-3) 초기 페이지 확인
$ curl <Instance Public IP>:8080
'Cloud > OCI(Oracle Cloud Infrastructure)' 카테고리의 다른 글
[OCI] OCI CLI를 활용한 자원 정리 (Feat. OCI Cloud Shell) (0) | 2024.06.29 |
---|---|
[OCI] 로드밸런서, 오토스케일링 설정 (+프리티어 계정 업그레이드) (0) | 2024.06.28 |
[OCI] HTTPS 연결 설정 (Feat. OCI Vault, RSA 마스터 암호화 키, CA 생성, CA 인증서 발급) (0) | 2024.06.21 |
[OCI] 애플리케이션 배포 (Feat. Flask, PyMySQL, Faker) (0) | 2024.06.21 |
[OCI] 데이터베이스 설치 및 기본 구성 (Feat. MySQL) (0) | 2024.06.20 |
@학슈퍼맨 :: 뭉게뭉게 학수의 클라우드 세상
개인 공부 목적으로 사용하는 블로그입니다 :)
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!