📌Docker란 무엇인가

 

1차조사

docker란?

  • Linux 컨테이너를 매우 가벼운 모듈식 가상 머신처럼 다룰 수 있게 해주는 컨테이너화 기술이며, 컨테이너의 구축, 배포, 복사, 다른환경으로 이동시키는 기능이 있습니다. 어플을 클라우드에 최적화하도록 지원합니다.
  • 1차조사 Linux컨테이너란?동일한 운영 체제 커널을 공유하고 시스템의 나머지 부분으로부터 애플리케이션 프로세스를 격리합니다. Linux 컨테이너는 운영 체제에서 기본으로 실행되고 모든 컨테이너 전체에서 운영 체제를 공유하므로 애플리케이션과 서비스를 가볍게 유지할 수 있으며 빠른 속도로 동시에 실행할 수 있습니다. 컨테이너를 사용하면 개발자들의 개발 환경이 각각 다른 상황에서 서버 환경을 재 구축하지 않더라도 어플을 작동시킬수 있습니다. 컨테이너 플랫폼(온프레미스,클라우드,하이브리드) 중 어떤것을 선택해도 컨테이너는 사용자의 요구사항을 충족시킬 수 있습니다.
  • Linux 컨테이너 이미지는 이식성과 버전 관리 기능을 제공하여 개발자의 노트북에서 수행하는 작업을 프로덕션에서도 수행할 수 있게 합니다.
  •  

도커 개념 재정리

한줄정리 : 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

  1. 컨테이너란?
  2. 공유하기 쉬운 방식으로 어플리케이션과(ex 어플이 독립형인가 기업형인가) 종속 항목을(ex 언어 / 종속성 / 데이터베이스 / 앱서버) 패키징할 수 있는 표준 구성요소이며 휴대가능. 격리. 경량화. 확장성이라는 장점이 있다. 다른 co-worker는 최소한의 작업으로 어플을 실행할 수 있다.
  3. 이러한 컨테이너를 가능하게 하는 소프트웨어 플랫폼이 Docker 이다.
  4. 내 운영체제에 도커를 설치하고 내 어플과 종속성을 컨테이너화 한다면, co-worker는 docker명령어를 통해 컨테이너를 실행하고 2번의 장점을 통해 잠재적인 프로세스 실수나 수동작업을 생략할 수 있다.
  5. 가상머신과의 차이점
  6. Docker는 게스트 운영체제(Host OS)가 없어서 로드할 필요가 없어 컨테이너 시작시간이 빠르며, 컨테이너를 가상머신보다 더 작고 빠르게 만들며 리소스를 적게 사용한다. '제 컴에서는 되는데요?'를 해결하는 것은 동일하나 솔루션의 방식이 다른 것.
  7. 도커의 이용방법
  8. 운영체제에 도커를 설치하고 도커이미지를 빌드방법 설명서-dockerFile 을 통해 도커이미지를 빌드. 도커 이미지란 컨테이너 생성/실행 템플릿이다. (클래스와 실행객체의 관계와 같다) 도커이미지로 도커 컨테이너를 실행한다.
  • WSL2(Windows Subsystem For Linux) : Windows10 운영체제에서 리눅스 운영체제의 쉘,시스템을 사용할 수 있도록 지원해주는 기능. Hyper-V(하이퍼바이저)에서 가상머신처럼 부팅되며 기존 가상머신처럼 100% 리눅스 커널과 호환. 가상머신처럼 메모리 할당 / 가상 IP부여(wsl2).
  • 쿠버네티스 : 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼으로 구글이 만들어서 현재 수많은 기업에서 사용중

[과제]

Docker를 설치. (2) 설치된 Docker를 이용해서 MySQL DBMS를 설치

이미지 다운은 docker desktop이 편했고

컨테이너 생성은 intelli J 에서 이미지>오른쪽버튼>container 생성이 가장 편했다

docker desktop을 통해 원하는 컨테이너의 terminal을 열면 앞에 #이 붙으면서 바로 컨테이너 이용이 가능했다. 굳이 cmd명령어로 컨테이너에 접근하는 수고가 없어졌다.

컨테이너 생성 후 사용 : https://woonizzooni.tistory.com/entry/Docker-mysql-설치-DB생성-테이블생성-예시

docker start 컨테이너이름

MySQL 컨테이너 쉘 진입 : docker exec -i -t 컨테이너이름  bash

root@컨테이너명:/# mysql -u root -p

Enter password : 비밀번호입력

이후

  • DB 조회 & 생성

mysql> SHOW DATABASES;

mysql> CREATE TABLE DB명 (testonly)

  • DB선택 & 테이블 생성

mysql> USE DB명 (testonly)

mysql> CREATE TABLE 테이블명(컬럼1, 컬럼2, ...

  • 데이터 입력 / 조회 / 삭제 ...

이유

.idea 나 imi 파일은 설정파일이므로 commit 할 때 올리지 않는다.

설정파일이므로 개발자들마다 취향이 다를진데, 설정파일까지 다 받아져서 overwrite되면 곤란하기 때문이다.

센스있게 제외하고 commit해야 한다.

김성박선생님(토토)의 즐거운 프로그래밍을 수강하다가 알게 되었다.

 

 

방법

정리를 너무 잘 해놓은 블로그 링크 걸기 

https://pinokio0702.tistory.com/132

 

[IntelliJ]깃허브에 소스를 올려보자

안녕하세요.  요즘 개발 공부를 하는데 인텔리제이를 사용하고 있습니다. 인텔리제이는 보기에도 개발자들이 좋아할 만한 UI와 색채? 그리고 개발을 편하게 해주는 자동완성기능, 간편한 Gradle

pinokio0702.tistory.com

 

+ Recent posts