728x90
반응형
SMALL
728x90
반응형
LIST
728x90
반응형
SMALL

■ WSL2 Docker에 Postgresql 설치

1. PowerShell을 실행한다.

2. 아래 명령어를 입력하고 Enter를 누르면 이미지가 만들어진다.

postgresql docker 이미지 생성

(참고)

  □ --name : docker에 등록할 이름

  □ -e : POSTGRES_USER는 사용자 설정(POSTGRES_USER 설정 안 하면 기본 값은 postgres), POSTGRES_PASSWORD는 비번 설정

  □ -d : Background에서 수행

  □ -p : 서비스 포트 지정, xxxx에 넣는 것으로 지정됨(xxxx:5432)

3. docker ps -a 명령어를 입력하여 이미지가 잘 만들어졌는지, 잘 실행되고 있는지 확인한다.

docker 이미지 생성 및 상태 확인

3. postgresql에 접속하여 database를 생성한다.

database 생성

4. \l 명령어로 database가 생성되었는지 확인한다.

database 생성 확인

■ DBeaver 접속

1. DBeaver 프로그램을 실행한다.

2. 아래 이미지와 같이 왼쪽 상단에 새 데이터베이스 연결 클릭 - PostgreSQL 클릭 - 다음을 누른다.

DBeaver 접속 순서

2. Database, Username, Password를 넣고 왼쪽 하단 Test Connection... 을 클릭하면 성공하였다는 메시지가 나온다.

DBeaver Test Connection 성공

728x90
반응형
LIST
728x90
반응형
SMALL

1 컨테이너(Container)

  - 도커의 핵심 개념 중 하나로, 애플리케이션과 그 종속성을 격리된 환경에서 실행하는 단위다.

  - 호스트 시스템의 리소스와 격리되어 있어 다른 컨테이너나 호스트 시스템에 영향을 주거나 받지 않는다.

  - 각 컨테이너는 독립적인 파일 시스템, 네트워크 스택 및 프로세스 공간을 가진다.

  - 컨테이너는 가상 머신보다 가볍다.

  - 컨테이너를 개발한 환경에서 다른 환경으로 쉽게 배포할 수 있다.

  - Docker Hub와 같은 레지스트리, Docker Compose와 같은 도구, Kubernetes와 같은 오케스트레이션 시스템과 통합되어 있어,

    컨테이너 관리 및 배포를 더욱 효과적으로 수행할 수 있다.

 

2. 이미지(Image)

  - 컨테이너를 생성하는 템플릿으로, 애플리케이션 및 종속성의 스냅샷이다.

  - 이미지는 읽기 전용이며 변경할 수 없다. 변경하려면 새로운 이미지를 생성해야 한다.

  - 도커 이미지는 Docker Hub와 같은 레지스트리에 저장되며, 이미지를 기반으로 컨테이너를 생성한다.

  - 여러 애플리케이션에 공통적으로 필요한 라이브러리나 도구를 이미지로 만들어 재사용할 수 있다.

 

3. 도커 레지스트리(Docker Registry)

  - 도커 이미지를 저장하고 공유하는 중앙화된 저장소이다.

  - Docker Hub는 가장 널리 사용되는 도커 레지스트리 중 하나이지만, 개인 또는 조직 내부에 자체 레지스트리를 구축할 수도 있다.

    (Amazon Elastic Container Registry (ECR), Google Container Registry (GCR), Azure Container Registry (ACR))

 

4. 도커 컴포즈(Docker Compose)

  - 여러 개의 컨테이너로 구성된 애플리케이션을 정의하고 실행하기 위한 도구이다.

    컴포즈 파일(YAML 형식)을 사용하여 애플리케이션의 서비스와 설정을 정의하고, 한 번에 여러 컨테이너를 실행, 관리할 수 있다.

 

5. 도커 파일(Dockerfile)

  - 도커 이미지를 생성하기 위한 빌드 지침을 포함하는 텍스트 파일이다.

   도커 파일을 사용하여 이미지를 빌드하면 애플리케이션과 종속성이 이미지로 패키지 된다.

 

6. 도커 컨테이너 관리

  - 도커 명령을 사용하여 컨테이너를 생성, 시작, 중지, 삭제 및 모니터링할 수 있다. 컨테이너의 로그를 확인하거나 실행 중인 컨테이너에 명령을

    실행하는 등 다양한 관리 작업을 수행할 수 있다.

 

7. 도커 네트워크(Docker Networking)

  - 기본적으로 Default Bridge Network에 연결된다. 이 모드에서 컨테이너는 호스트 시스템과 연결되어 외부와 통신할 수 있다.

    또한 컨테이너 간 통신도 지원하며, 내부 IP 주소로 서로 통신할 수 있다.

  - Host Network로 실행하면 컨테이너는 호스트 시스템의 네트워크 스택에 직접 연결된다.

    이로써 컨테이너는 호스트와 동일한 네트워크 환경에서 실행되므로 호스트 포트를 사용할 수 있다.

  - Bridge Network로 실행하면 컨테이너 간 통신을 지원하는 독립적인 가상 네트워크를 생성한다. 컨테이너는 동일한 네트워크에 연결하고,

    내부 IP 주소로 서로 통신할 수 있다. 이 모드는 다수의 컨테이너를 실행하는 경우 유용하다.

  - host None Network로 실행하면 네트워크 연결을 완전히 비활성화하는 모드로, 컨테이너가 외부와 통신하지 않도록 한다.

  - Custom Bridge Network로 실행하면 컨테이너 간 통신을 제어하고 격리 수준을 조절할 수 있다.

    또한 다양한 컨테이너 그룹을 독립적으로 관리할 수 있다.

  - Overlay Network는 여러 호스트에서 컨테이너를 실행하는 경우 사용되며, 컨테이너 간에 안전한 암호화된 통신을 제공한다.

    이 모드는 도커 스웜과 같은 오케스트레이션 도구와 함께 사용된다.

 

8. 도커 볼륨(Docker Volume)

  - 호스트 시스템 또는 클라우드 스토리지와 연결되어 컨테이너 내부의 데이터를 영구적으로 보존한다.

    이로써 컨테이너를 중지하거나 삭제해도 데이터가 유지된다.

  - 여러 컨테이너 간에 데이터를 공유하고 복제할 수 있다.

  - 동일한 볼륨을 여러 컨테이너에 연결하여 데이터를 공유하거나 백업을 수행할 수 있다.

  - docker volume create 명령어를 사용하여 도커 볼륨을 생성하고, docker volume ls 명령어를 사용하여 볼륨 목록을 확인할 수 있다.

  - -v 또는 --volume 플래그를 사용하여 컨테이너에 볼륨을 연결할 수 있다. 이렇게 하면 컨테이너 내부에서 볼륨을 사용할 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

1. debootstrap

  - Debian 기반 리눅스 시스템을 설치하고 구성하기 위한 도구이다. 주로 Debian 및 Debian 계열 배포판 (예: Ubuntu)에서 사용된다.

    Debootstrap를 사용하면 최소한의 시스템 파일 및 패키지를 포함하는 Debian 루트 파일 시스템을 생성하고,

    이를 사용하여 사용자 정의 된 시스템을 구축할 수 있다.

 

2. upstart

  - 초기화 및 서비스 관리를 위한 리눅스 시스템 초기화 시스템이다.

    이전에 init 시스템이나 sysvinit 시스템과 호환성을 가지며, 더욱 빠르고 효율적인 부팅 및 서비스 관리를 제공하기 위해 개발되었다.

    Upstart은 Ubuntu와 같은 일부 리눅스 배포판에서 기본 초기화 시스템으로 사용되었다.

 

3. nginx

  - 오픈 소스 웹 서버 및 리버스 프록시 서버 소프트웨어로, 웹 애플리케이션을 제공하고 관리하는 데 사용된다.

    Nginx는 빠르고 가벼우며 확장 가능하며, 대규모 웹 사이트 및 애플리케이션을 위한 고성능 웹 서버로 널리 사용된다.

    또한 Nginx는 부하 분산, SSL/TLS 종단 간 암호화, 캐싱, 로드 밸런싱, 보안 및 웹 애플리케이션 방화벽과 같은 고급 기능을 제공한다.

 

4. squid

  - 오픈 소스로 개발된 프록시 서버 소프트웨어로, 네트워크에서 웹 콘텐츠를 캐싱하고 필터링하는 데 사용된다.

    Squid는 대부분의 운영 체제에서 동작하며, 네트워크의 트래픽을 줄이고 사용자 경험을 향상시키는 데 도움을 준다.

 

5. cortex

  - 오픈 소스로 개발된 시계열 데이터 처리 및 분석 플랫폼이다.

    Cortex는 PromQL 쿼리 언어와 호환되며, Prometheus와 통합하여 대규모 시계열 데이터를 수집, 저장, 검색 및 시각화하는 데 사용된다.

    Cortex는 효율적인 확장성, 고성능, 그리고 신뢰성을 제공하여 대규모 시계열 데이터의 처리를 지원한다.

 

6. apache2

  - Apache HTTP Server, 더 알려진 이름으로 Apache는 가장 널리 사용되는 오픈 소스 웹 서버 소프트웨어 중 하나이다.

    Apache는 다양한 운영 체제에서 동작하며, 정적 및 동적 웹 페이지를 서비스하는 데 사용된다.

    또한 Apache는 모듈 아키텍처를 통해 다양한 기능을 확장할 수 있어 많은 웹 개발자와 시스템 관리자에게 인기가 있다.

 

7. kafka

  - Apache Kafka는 분산 스트리밍 플랫폼으로, 대용량 실시간 데이터 스트림을 처리하고 저장하는 데 사용되는 오픈 소스 소프트웨어다.

    Kafka는 이벤트 스트리밍 아키텍처(ESA)의 핵심 요소로 사용되며, 대부분의 시스템에서 로그 및 이벤트 데이터를 신뢰성 있게 수집,

    전송 및 처리하는 데 사용된다.

 

8. mysql

  - 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터베이스를 생성, 관리, 및 쿼리 하기 위한 소프트웨어다.

    MySQL은 많은 웹 응용 프로그램, 비즈니스 애플리케이션, 데이터 웨어하우스, 온라인 서비스 등 다양한 응용 분야에서 널리 사용되고 있으며,

    빠른 성능, 안정성, 확장 가능성을 제공한다.

 

9. bind9

  - 오픈 소스로 개발된 DNS(Domain Name System) 서버 소프트웨어다.

    DNS는 인터넷에서 도메인 이름과 IP 주소를 연결하고, 네트워크에서 호스트 및 서비스를 검색하는 데 사용되는 핵심 인프라 서비스다.

    BIND9는 DNS 쿼리에 대한 응답을 생성하고 DNS 데이터를 저장하고 유지 관리하는 서버 역할을 수행한다.

 

10. zookeeper

  - 분산 응용 프로그램 및 서비스의 조정, 구성 관리, 네임스페이스 및 실시간 모니터링을 위한 분산 서비스이다.

    주로 대규모 분산 시스템의 일관성과 동기화를 달성하기 위해 사용된다.

    ZooKeeper는 Apache 소프트웨어 재단에서 개발 및 관리하며, 오픈 소스로 제공된다.

 

11. prometheus

  - 오픈 소스 시스템 및 응용 프로그램 모니터링 및 경고 도구다. 이는 기본적으로 컨테이너화된 환경 및 분산 시스템에서 사용하기에 적합하며,

    대규모 환경에서 실시간으로 시스템 및 애플리케이션의 상태를 모니터링하고 경고를 생성하는 데 사용된다.

 

12. postgres

  - 오픈 소스 객체 관계형 데이터베이스 관리 시스템(RDBMS)이다.

    PostgreSQL은 신뢰성 높은 데이터베이스 관리, 고급 기능, 확장 가능성 및 데이터 무결성을 제공하며, 무료로 사용할 수 있는 소프트웨어다.

    많은 기업 및 개발자 커뮤니티에서 널리 사용되며, 대규모 웹 애플리케이션, 비즈니스 시스템, 데이터 웨어하우스 등 다양한 응용 분야에서

    활용된다.

 

13. redis

  - Remote Dictionary Server의 약자로 오픈 소스인 메모리 데이터 스토어다. 키-값 쌍을 저장하고 검색하는 데 사용된다.

    Redis는 고성능 및 대용량 데이터를 처리하기 위해 설계되었으며, 다양한 응용 프로그램에서 캐싱, 세션 관리, 메시지 브로커 및 데이터베이스로

    사용된다.

 

14. grafana

  - 오픈 소스 데이터 시각화 및 모니터링 도구로, 다양한 데이터 소스로부터 데이터를 가져와 시각적으로 표현하고 모니터링하는 데 사용된다.

    Grafana는 다양한 시각화 패널 및 대시보드를 제공하여 데이터를 실시간으로 모니터링하고 분석하는 데 도움을 준다.

 

15. memcached

  - 분산 메모리 캐싱 시스템으로, 데이터베이스, API 호출 또는 기타 데이터 소스에서 가져온 데이터를 메모리에 캐시 하여 빠르게 액세스 할 수

    있도록 하는 역할을 한다.

    Memcached는 오픈 소스이며, 빠른 데이터 조회와 검색 성능을 필요로 하는 웹 애플리케이션 및 분산 시스템에서 많이 사용된다.

 

16. dotnet-aspnet

  - ASP.NET은 .NET을 사용하여 최신 웹 앱 및 서비스를 구축하기 위해 Microsoft에서 만든 오픈 소스 웹 프레임워크다.

 

17. dotnet-deps

  - 종속성을 검사하고 업데이트한다.

 

18. prometheus-alertmanager

  - Prometheus 모니터링 시스템과 함께 사용되는 알림 관리 도구다.

    Prometheus는 시스템 및 애플리케이션 모니터링을 위한 오픈 소스 도구로, 서버 및 애플리케이션의 상태를 주기적으로 스크랩하고 이벤트에

    대한 경고 및 알림을 생성한다.

    Alertmanager는 이러한 경고 및 알림을 수신하고 관리하며, 사용자에게 경고를 전달하고 필요한 조치를 취할 수 있도록 도와준다.

 

19. dotnet-runtime

  - Microsoft에서 개발한 .NET 프레임워크의 일부다.

    .NET 프레임워크는 다양한 프로그래밍 언어를 지원하고, Windows 운영 체제에서 실행되는 애플리케이션 개발을 위한 플랫폼으로 사용된다.

    .NET Runtime은 .NET 애플리케이션을 실행하기 위한 런타임 환경을 제공한다.

 

20. cassandra

  - 분산형 NoSQL 데이터베이스 시스템의 하나로, 대량의 데이터를 고성능으로 저장하고 관리할 수 있는 오픈 소스 솔루션이다.

    아파치 소프트웨어 재단(Apache Software Foundation)에서 개발하고 유지보수하며, 빅데이터 및 대규모 웹 애플리케이션에서 많이 사용된다.

 

21. jre

  - Java 프로그램을 실행하기 위한 환경을 제공하는 소프트웨어다.

    JRE는 Java 언어로 작성된 애플리케이션 및 애플릿(웹 페이지에서 실행되는 작은 Java 프로그램)을 실행하는 데

    필요한 모든 런타임 컴포넌트와 라이브러리를 포함하고 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

■ Docker 설치

1. Docker 공식 홈페이지로 접속 : https://www.docker.com/

2. 홈페이지에서 오른쪽 위 Get Started를 클릭한다.

Docker 공식 홈페이지

3. Download for Windows를 클릭한다. 화살표 버튼을 누르면 os별로 다운받을 수 있다.

Docker Window 버전 다운

4. 다운로드가 완료되면 아래와 같은 파일이 생성된다.

5. 다운로드된 파일을 더블클릭하여 설치를 시작한다.

6. 아래 2개 항목을 체크하고 Ok를 클릭한다.

  - Use WSL 2 instead of Hyper-V (recommended) : Hyper-V 대신 WSL 2 사용(권장)

  - Add shortcut to desktop : 바탕 화면에 바로 가기 추가

7. 설치가 시작되고, 완료되면 Close and log out 버튼을 클릭한다. 재부팅이 되므로 주의한다.

■ Docker 설치 확인

1. 재부팅이 완료되고 아래 이미지가 뜨면, Accept를 클릭한다.

2. 오른쪽 밑 시계 옆에 Docker가 실행 중인 것을 볼 수 있다.

3. Docker를 실행하여, 설정 버튼 - Resources - WSL integration - Enable integration with my default WSL distro 체크하고,

    하단에는 설치된 배포판 버전을 활성화시킨다.

4. PowerShell을 실행하여, docker -v 또는 docker verion을 입력하여 설치가 잘 되었는지 확인한다.

728x90
반응형
LIST
728x90
반응형
SMALL

■ Docker 사용 이유

1. 환경의 일관성

  - Docker는 애플리케이션과 그에 필요한 라이브러리, 종속성, 환경 변수 등을 하나의 컨테이너로 패키징하여 구동한다.

    이로 인해 개발 환경, 테스트 환경, 프로덕션 환경 등 모든 환경에서 애플리케이션을 일관성 있게 실행할 수 있다.

2. 빠른 배포

  - Docker 컨테이너는 가볍고 빠르게 생성, 시작 및 중지할 수 있으며, 가상 머신과 비교해 배포 속도가 훨씬 빠르다.

    이러한 특성으로 인해 개발자와 운영팀은 빠르게 애플리케이션을 배포하고 확장할 수 있다.

3. 효율적인 자원 관리

  - 가상 머신과 달리 Docker는 호스트 운영 체제의 커널을 공유하여 자원을 효율적으로 관리한다.

    이로 인해 더 많은 애플리케이션을 동일한 물리적 머신에서 실행할 수 있다.

4. 이식성

  - Docker 컨테이너는 독립적으로 실행되므로 어느 환경이든 동일한 방식으로 작동한다.

    개발 환경과 프로덕션 환경 사이의 차이를 최소화하여 애플리케이션 배포와 스케일링을 간편하게 만든다.

5. 강력한 이미지 관리

  - Docker 이미지는 컨테이너를 생성하는 데 필요한 모든 정보를 포함한다.

    이미지를 버전 관리하고 공유하여 애플리케이션을 쉽게 관리할 수 있다.

6. 마이크로서비스 아키텍처

  - Docker는 마이크로서비스 아키텍처를 구현하는 데 이상적이다.

    각 마이크로서비스를 독립적인 컨테이너로 실행하여 개별적으로 관리하고 확장할 수 있다.

7. 커뮤니티와 생태계

  - Docker는 거대한 커뮤니티와 풍부한 생태계를 가지고 있다.

    다양한 플러그인, 도구, 이미지 등이 사용자들에 의해 지속적으로 개발되고 공유되어 생산성을 향상시킨다.

8. 가상 머신과의 통합

  - Docker는 기존 가상 머신과 함께 사용할 수 있다.

    가상 머신 내부에 Docker를 설치하여 가상 머신의 이점과 컨테이너의 이점을 함께 활용할 수 있다.

 

■ Docker 공개

- Docker는 2013년에 처음으로 공개되었다. Docker는 Docker Inc.라는 회사가 개발하고 출시한 오픈 소스 프로젝트로 시작되었다.

  초기 버전은 dotCloud라는 회사에서 개발된 dotCloud PaaS(Platform as a Service)의 일부로 사용되었다.

  2013년 3월, dotCloud에서 프로젝트를 공식적으로 "Docker"라는 이름으로 발표하고, 4월에 첫 번째 베타 버전이 출시되었다.

  Docker는 빠르게 인기를 얻고 개발자들과 기업들 사이에서 컨테이너 기반 가상화 기술로서 널리 채택되기 시작했다.

  이후 Docker Inc.는 컨테이너 기술을 발전시키고 보급시키는데 지속적인 역할을 하면서 Docker 프로젝트를 발전시켜 왔다.

  2017년에는 Docker의 세컨드 버전인 "Docker CE"와 "Docker EE"를 발표하여 더 많은 사용자와 기업들이 Docker를 채택할 수 있도록 하였다.

  현재 Docker는 개발자들과 기업들 사이에서 매우 인기 있는 컨테이너 가상화 솔루션으로서 사용되고 있으며, 컨테이너 기반의 애플리케이션

  배포와 관리를 단순화하는 강력한 도구로 폭넓게 활용되고 있다.

 

■ Docker 단점

1. 복잡성

  - Docker는 기본적으로 컨테이너화된 애플리케이션을 생성하고 관리하는 작업을 단순화한다.

    그러나 처음 사용자들은 Docker의 개념과 동작 방식을 이해하는 데 시간이 걸릴 수 있으며, 복잡한 설정과 문제 해결이 필요할 수 있다.

2. 보안 위험

  - Docker 컨테이너는 호스트 운영 체제의 커널을 공유하므로, 악의적인 사용자가 컨테이너 내부에서 호스트 시스템에 영향을 미칠 수 있는

    보안 위험이 있다. 적절한 보안 관행과 격리를 적용해야 한다.

3. 자원 소비

  - Docker 컨테이너는 가상 머신과 비교하면 상대적으로 자원 소비가 적지만, 여전히 추가적인 자원을 요구한다.

    컨테이너화된 애플리케이션을 실행하는 데에는 일정 수준의 오버헤드가 발생할 수 있다.

4. Docker 호환성

  - 모든 애플리케이션이 Docker로 컨테이너화되지는 않는다.

    특히, 레거시 시스템이나 일부 특정 기술 스택은 Docker 컨테이너를 지원하지 않을 수 있다.

5. 크기 증가

  - Docker 이미지는 컨테이너를 생성하는 데 필요한 모든 요소를 포함하므로 이미지 크기가 커질 수 있다.

    큰 이미지는 네트워크 대역폭과 저장 공간을 소비하며, 이미지 배포 시에도 시간이 더 오래 걸릴 수 있다.

6. Docker Daemon 문제

  - Docker를 실행하기 위해 Docker Daemon이 항상 백그라운드에서 실행되어야 한다.

    이 데몬의 오작동이나 충돌은 컨테이너 운영에 영향을 미칠 수 있다.

7. Docker 파일 시스템 오버헤드

  - Docker는 호스트 시스템과 컨테이너 사이에 파일 시스템 매핑을 수행한다.

    매핑된 파일 시스템의 오버헤드가 발생할 수 있으며, 성능에 영향을 미칠 수 있다.

8. Docker 네트워킹 복잡성

  - 여러 개의 컨테이너가 동시에 실행되고 상호 작용할 때 네트워킹 설정과 연결에 대한 복잡성이 발생할 수 있다.

728x90
반응형
LIST

+ Recent posts