Open WonYong-Jang opened 6 years ago
Git 에서의 .gitignore 파일처럼, Docker에서는 .dockerignore 파일도 존재한다. .gitignore 파일의 목적과 동일한 목적을 위해 존재하며, 동작도 거의 유사하다.
$ touch Dockerfile
FROM node:8 // 어떤 이미지를 사용해서 빌드할 것인지 정의 / 8은 버전을 의미
// 이미지 안의 어플리케이션 코드를 넣기 위해 디렉토리 생성
$ 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]
$ 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서버 할당 포트가 된다는 것입니다.
AWS 같은 기업은 ec2 인스턴스 서비스를 해주기 위해서 엄청난 물량의 물리적 컴퓨터(서버)를 보유
기업에서 사용하는 클라우드 컴퓨팅 1) 스타트업의 경우 저렴한 컴퓨터를 싼가격에 보유하기를 희망 ==> aws에서 한대의 컴퓨터를 여러개로 쪼개서 서비스가 가능함
2) 대기업의 경우 성능이 뛰어난 슈퍼 컴퓨터를 희망 ==> aws에서 여러대의 컴퓨터를 합쳐서 서비스
기업의 변화에 유연하다라는 것이 장점 ==> 접속자수(컴퓨터 수요) / 변화하는 요구에 따라 얼마나 유연하게 대응할수 있는지 ( 클라우드 컴퓨팅이 성장한 이유)
인스턴스의 수를 늘려서 서버 트래픽에 대응하는 방법
이때 현재 인스턴스를 AMI(Amazon Machine Image) 이미지로 만들고 이 이미지를 통해서 똑같은 인스턴스를 만들어서 연동 ELB ( Elastic Load Balancer )
health check 기능 지원 ( ping port ) ==> 인스턴스 확인해서 서버가 죽었는지 확인해서 죽었다면 요청을 죽은 서버로 보내지 않는 기능
도커 아이콘 활성화
$ 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
select dbms_xdb.gethttpport() from dual; // 포트 확인
exec dbms_xdb.sethttpport(9000); // exec 를 통해 지정할 포트 입력
클라우드 컴퓨팅
it 서비스 제공해주는 것
프라이빗 클라우드
퍼블릭 클라우드
클라우드 컴퓨팅 서비스 유형
Iaas(Infrastructure as a Service) : 인프라 서비스
Paas ( Platform as a Service) : 플랫폼 서비스
Sass ( Software as a Service) :
클라우드 구축하기 위한 요소기술에 가상화 기술과 도커와 같은 컨테이너기반 기술이있다.
가상화
컨테이너