[TIL - 0830] 도커 알아보기와 이미지 만들고 실행, 쿼리 쓰는 연습하기

도커

  • 리눅스 컨테이너 기술을 활용함 : 사용 하는 것에 있어서 추상화 시킨 것으로 이해함 - 사용할 때 커맨드 인터페이스로 명령(docker run, images 등)
  • 왜 경량화인가? 왜 고립되었다고 하는가? (단번에 이해하기 어려운 기술일 것 같아서 계속해서 봐야할 듯)
    • 가상화랑은 다르게 호스트 OS에 게스트 OS를 설치하지않음 : 호스트 커널을 공유함
    • 자원을 같이 쓰되 고립된 환경에서 사용함
  • 개발, 배포, 운영 단계에 반복적으로 해야할 수 있는 일을 이미지화 시켜서 생산성을 향상 시킴
    • 개발 환경을 세팅한다면 jdk 설치, 빌드툴 설치, 디펜던시 설치, 환경 변수 세팅 등 해야할 일이 많은데 이미지로 만들고, 실행(컨테이너화)하면 끝 : N대로 늘렸을 때 매번 같은 환경 구성과 코드 내려받기 등을 하지않고도 이미지 pull -> run
  • 단점은 뭐가 있지? - 파악해보기
  • 실행
    • docker run 이미지 : 입력하면 해당 이미지가 있는지 체크하고, 없다면 docker hub에서 내려받고 실행시킴
> docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
  • 이미지화 해보기 : docker docs에 나와있는 예제를 먼저 활용해봄
    1. Dockerfile(파일명) 만들기
    2. 이미지 빌드 : docker build -t 이름 빌드_파일_경로
    3. docker images로 이미지 생성되었는지 체크
    4. docker run -d -p 호스트포트:컨테이너포트 이미지명 (p : 포트 바인드 설정, d : 백그라운드 실행)
    5. DockerHub도 사용해서 이미지 공유하는 것도 해보기 : Docker Hub에 업로드 후 pull 받고 run 시키면 따로 환경세팅없이 똑같이 실행가능! - 패키징(이미지) 되어있는 것을 그대로 실행시킴(컨테이너화)
/* 실행 후 API 요청 결과 */
Hello World!
Hostname: 8f92d0eb1a86
Visits: cannot connect to Redis, counter disabled

데이터베이스

JOIN

  • Outer Join과 Inner Join
    • Outer Join은 방향에 따라 한 쪽 방향 데이터는 모두 출력되고, 한 쪽은 ON 조건에 맞는 데이터만 출력 나머지는 Null : 조건에 맞는 데이터만이 아니라 한 쪽은 모두 출력되기를 원할 때(nullable한 데이터까지 고려)
    • Inner Join 두 테이블 모두 ON 조건에 맞는 데이터만 출력 : 교집합
  • LEFT, RIGHT OUTER JOIN과 LEFT JOIN, RIGHT JOIN 완전 같은 쿼리 : OUTER를 생략함

GROUP BY

  • 특정 컬럼의 데이터를 기준으로 그룹핑함
  • 테스트 테이블 생성
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int(11)     | NO   | PRI | NULL    | auto_increment |
| name    | varchar(16) | NO   |     | NULL    |                |
| country | varchar(16) | NO   |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+
  • 그룹핑
> SELECT country, count(*) as countOfCountry from Customers GROUP BY country;
+---------+----------------+
| country | countOfCountry |
+---------+----------------+
| Korea   |              2 |
| Mexico  |              1 |
| Spain   |              1 |
| UK      |              2 |
+---------+----------------+