WonYong-Jang / Development-Process

It is where I record the error fixes or learning during the development process.
0 stars 1 forks source link

클라우드 / Docker / 엣지 컴퓨팅!! #22

Open WonYong-Jang opened 6 years ago

WonYong-Jang commented 6 years ago

클라우드 컴퓨팅

프라이빗 클라우드

퍼블릭 클라우드

클라우드 컴퓨팅 서비스 유형

Iaas(Infrastructure as a Service) : 인프라 서비스

Sass ( Software as a Service) :

가상화

컨테이너

WonYong-Jang commented 5 years ago

Dockerfile

.dockerignore

Git 에서의 .gitignore 파일처럼, Docker에서는 .dockerignore 파일도 존재한다. .gitignore 파일의 목적과 동일한 목적을 위해 존재하며, 동작도 거의 유사하다.

$ touch Dockerfile

FROM node:8 // 어떤 이미지를 사용해서 빌드할 것인지 정의 / 8은 버전을 의미

// 이미지 안의 어플리케이션 코드를 넣기 위해 디렉토리 생성
WonYong-Jang commented 5 years ago

Docker 명령어

버전 확인

$ docker --version
$ docker-compose --version
$ docker-machine --version

컨테이너 ( 이미지를 실행시킨 상태 )

$ docker ps // 현재 실행중인 컨테이너 
$ docker ps -a // 지금까지 만든 전체 컨테이너 목록 (종료된 컨테이너 목록)
$ docker inspect [컨테이터명] // 자세한 정보 확인
$ docker stop [컨테이너명] // 중지
$ docker rm [컨테이너명] // 삭제

이미지 ( 라이브러리가 조합된 실행파일 이라 생각 )

$ docker images // 다운로드 된 이미지 확인
$ docker pull ubuntu:14.04 // 14.04 와 같이 태그가 주어지지 않으면 latest로 지정됨
$ docker rmi [이미지 id]

컨테이너를 생성하는 동시에 실행(우분투로 들어감)

$ docker run -i -t ubuntu:14.04 /bin/bash -i : 사용자가 입출력할수 있는 상태로 하겠다 (interactive) -t : 가상 터미널 환경을 emulation 해주겠다 ( bash 를 띄워서 입출력이 가능) ==> 일반적인 경우 i, t 옵션으로 줌 ( 우분투 이미지처럼 커맨트라인이 필요할 경우 ) /bin/bash : 도커는 메인 실행 파일을 지정해 주어야함 ( 컨테이너의 실행 파일을 bin/bash 파일을 쓰겠다)

[컨트롤+p+q] : 컨테이너 종료하지 않으면서 빠져나오기 (bash 단축키)

$ exit : 컨테이너 종료하면서 빠져나오기

컨테이너 실행

$ docker start [컨테이너 id 또는 name]

컨테이너로 접속

$ docker attach [컨테이너id 또는 name]

실제 os 에서 docker 컨테이너 os 에 명령을 던질수 있음

$ docker exec [컨테이너 Id 또는 name] touch /hello.txt

이미지 빌드

$ docker build --tag node_server:0.0.1 [Dockerfile이 위치하는 경로] ex) $ docker build --tag node_server:0.01 .

생성된 이미지로 컨테이너 만들기

$ docker create --name [서버명] -p [외부 포트:컨테이너 내부포트] [이미지명:버전태그]

// 포트번호 바인딩 중 왼쪽은 우리가 접속할 실제 포트이고, 오른쪽은 컨테이너 내부의 NodeJS서버 할당 포트가 된다는 것입니다.

WonYong-Jang commented 5 years ago

AWS

EC2 ( Elastic Comute Cloud )

2019-01-06 3 57 50

[ Scalability ]

AWS 같은 기업은 ec2 인스턴스 서비스를 해주기 위해서 엄청난 물량의 물리적 컴퓨터(서버)를 보유

기업에서 사용하는 클라우드 컴퓨팅 1) 스타트업의 경우 저렴한 컴퓨터를 싼가격에 보유하기를 희망 ==> aws에서 한대의 컴퓨터를 여러개로 쪼개서 서비스가 가능함

2) 대기업의 경우 성능이 뛰어난 슈퍼 컴퓨터를 희망 ==> aws에서 여러대의 컴퓨터를 합쳐서 서비스

기업의 변화에 유연하다라는 것이 장점 ==> 접속자수(컴퓨터 수요) / 변화하는 요구에 따라 얼마나 유연하게 대응할수 있는지 ( 클라우드 컴퓨팅이 성장한 이유)

[ Scale Up ]

[ Scale Out ]

AutoScaling

S3 ( Simple Storage Service )

WonYong-Jang commented 4 years ago

도커 이용하여 오라클 11g 설치

도커 아이콘 활성화

$ docker pull jaspeen/oracle-xe-11g // 다운로드

$ docker search oracle-xe-11g 확인

$ docker run --name oracle11g -d -p 49160:22 -p 49161:1521 jaspeen/oracle-xe-11g // 이미지 실행

docker run --name <사용자 지정 이름> -d -p 49160:22 -p 49161:1521 -v <디렉토리 경로> deepdiver/docker-oracle-xe-11g

위의 도커 명령문으로 오라클을 실행하면 됩니다.

-( 이름 : oracle11g, 경로 : desktop/dev/d/oracle11g) -
docker run --name oracle11gXE -d -p 49160:22 -p 49161:1521 -v ~/desktop/dev/d/oracle11gXE deepdiver/docker-oracle-xe-11g

==> 오라클 도커 컨테이너의 1521 포트를 localhost의 49161 포트로 연결되었다는 것!!
즉, localhost의 49161 포트로 접근하면 오라클 데이터베이스에 접근 할수 있음!
(sql developer 에서 49161로 들어가야함!!!!!!!)
옵션
-d  백그라운드에서 실행
-p 플래그를 사용하여 호스트포트와 컨테이너포트를 매핑(호스트포트:컨테이너포트)

==> 도커의 컨테이너는 휘발성(일회성)이라는 특성을 가지고 있기 때문에 run을 통해 오라클을 한번 실행하는 동안에만 데이터가 유지되며 도커를종료하면 데이터를 잃게 됨 ==> 따라서 이를해결하기 위해 오라클을 실행할때 이름을 지정해 주고, 디렉토리를 설정해 도커가 종료 되어도 기존의 작업들이 날아가지 않도록 디렉토리를 지정해줌

$ docker start [컨테이너 이름] $ docker exec -it oracle11g sqlplus enter-user-name : system password:oracle

SQL Developer 설치

스크린샷 2019-10-26 오후 9 31 05 스크린샷 2019-10-15 오후 9 57 16 스크린샷 2019-10-15 오후 9 58 21

JDBC 연결

참고 : https://stophyun.tistory.com/190