[2023.01.12] 개발자 교육 78일 차 : 강의-AWS 학습(Mac) [구디 아카데미]

DaramGee·2024년 1월 14일
0

복습

실습내용 복습

  • 서브넷

  • 프라이빗 서브넷의 경우, NAT 게이트웨이 통해 나갈 수 있음.
  • 서버의 경우, 사용자가 직접 접근할 일이 없기 때문에 프라이빗 서브넷에 위치함.
  • 로드밸런서 사용하여 svr1, svr2 트래픽 관리

강의 내용

Docker

  • 컨테이너 가상서버

  • 컨테이너가 있는 경우, 하이퍼바이저에 비해 경량이고, 배포하고 공유하기 편한 장점이 있음.
  • 사용과정 : 컨테이너(어제 실습 : MySQL) 안에 미리설정을 해두고, 이미지를 만들어 두게 됨 -> 그 이미지를 이용해서 컨테이너를 만들 수 있음.
  • 도커 구성요소

  • 클라이언트
  • 도커 호스트
    - 이미지 -> 컨테이너 생성할 수 있음.
    - AWS에 저장해두고 사용 가능, 이미지가 있어야 복사해서 사용할 수 있음
  • 레지스트리 : 이미지 저장되는 공간
    - 도커 허브(https://hub.docker.com/)

이미지 vs 컨테이너
프로그램 vs 프로세스
클래스 vs 인스턴스

  • Docker 이미지 사용 법

  • 컨테이너 통해 만들기 ; 컨테이너 만든 뒤, 작업을 한 것에 따른 이미지 생성(반복작업 줄어듦)
    - 커밋 : 이미 실행되어있는 상태의 컨테이너를 통해 만드는 것 (복사의 느낌)
  • 도커파일로 이미지 만들기(도커 허브에서 이미지 다운받아서)
    - 현재 컨테이너가 없는 상태, Dockerfile의 설정에 따라 이미지를 만드는 것
  • OS로 이미지 만들기(기본 이미지 있어서 많이 사용 x)
    ->내가 사용하고 있는 프로젝트 버전에 따라 이미지를 만든다고 생각하면 됨


도커 허브 사이트

  • explore

  • explore에 있는 파일 이미지 파일임
  • 컨테이너에 설치되어있는 파일을 확인할 수 있음.
  • 프로젝트에 필요한 설정에 따라 필요한 이미지(환경설정)를 받아둘 수 있음.
  • 이미지 이름 구성
jeeyeon116 / guestbook : 1.21
사용자 / 이미지명 : 이미지태그(버전)
허브에서 받을 땐 사용자 입력 필요, 이미지태그 미입력 시 최근 버전이 기본값
  • Repo

  • 프로젝트 이름에 따라 레포 생성(퍼블릭)
  • 태그 : 버전을 나타냄(이미지 만들 때, 버전을 미입력 할 때 기본값은 Recent Tag : 가장 최근 버전으로 붙여줌)
    ![[Pasted image 20240112094612.png]]

Docker 실습(Mac)

  • 컨테이너 생성 및 실행

  • 이미지 다운로드 by Docker hub
  • docker pull nginx (뒤에 : 버전 없으면 최신으로 다운로드 됨)
  • 이미지 상세정보 확인
    - docker inspect 이미지id4자리 -> 컨테이너 상세정보, 아이피 확인 가능(CONTAINER ID 일부)
    - 또는 docker inspect 이미지names전체
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",  -> 이거로 접속 가능
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": null
  • 이미지 확인하기 : docker image ls
  • Docker 실행하기(for Mac, 포트번호 정해서) : docker run -d --name nginx -v /opt/html:/usr/share/nginx/html -p 80:80 nginx
1.Docker 컨테이너 생성
docker create nginx

2.Docker 컨테이너 실행
docker start {컨테이너ID}

2.Docker 컨테이너 삭제
docker rm {컨테이너ID}

3.Docker 컨테이너 모두 정지, 삭제
docker stop $(docker ps -a -q) 
docker rm 'docker ps -a -q'

4.Docker 컨테이너 접속(exec)
docker exec -it [CONTAINER ID]
  • 컨테이너 종료없이 빠져나오기

  • 컨트롤 p+q 눌러서 컨트롤러를 끄지 않고 나갈 수 있음.

  • 도커 이미지 다운로드, 컨테이너 생성, 실행

1.Docker 이미지 다운로드
docker pull nginx
docker run -it -d --rm -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 --name myDB mariadb - docker run --name myoracle -d -p 8080:8080 -p 1521:1521 jaspeen/oracle-xe-11g


2.Docker 이미지 삭제
docker rmi {이미지ID}
docker rmi $(docker images -q) 

  • Docker 기본 명령어

1.Docker 실행
sudo service docker start(stop/restart)   
sudo systemctl start(stop/restart) docker

#옵션 설명 
-d detached mode 흔히 말하는 백그라운드 모드 
-p 호스트와 컨테이너의 포트 설정
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트) 
-e 컨테이너 내에서 사용할 환경변수 설정 
–name 컨테이너 이름 설정 
–rm 프로세스 종료시 컨테이너 자동 제거 
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 
–link 컨테이너 연결 [컨테이너명:별칭]    

2.Docker 상태보기
sudo service docker status

---------------------------------------------------------------------------------------------------------
1.id 및 ip확인하기
docker exec -it 아이디 bash 
apt update
apt install utils
apt install inputils
apt install iproute2
apt install route2 
ip a -> ip 확인 가능해짐
apt install openjdk-8-jdk  ->jdk 설치 -> 나라 설정 : 아시아/서울
docker run --name=guestbookapp 
--rm -p 80:8080 
-e MYSQL_IP=172.25.214.106 // DB동작 Ip주소
-e MYSQL_PORT=3306
-e MYSQL_DATABASE=guestbook
jeeyeon116/guestbook:2.0   //본인이 생성한 이미지 이름 
                                                                

0개의 댓글