728x90
반응형

Windows에서 WSL(Windows Subsystem for Linux)을 통해 Ubuntu에 Docker를 설치하려면 아래 단계를 따라 진행하면 됩니다. 

1. WSL 및 Ubuntu 확인

먼저 WSL이 설치되어 있고 Ubuntu가 제대로 실행되는지 확인하세요.

Windows PowerShell 또는 명령 프롬프트에서 다음 명령어를 실행해 WSL이 설치되어 있는지 확인:

 
wsl --list

결과에 Ubuntu(예: Ubuntu-20.04)가 보이면 됩니다. 없으면 Microsoft Store에서 Ubuntu를 설치하세요.

Ubuntu를 실행:

 
wsl -d Ubuntu

또는 시작 메뉴에서 "Ubuntu"를 검색해 실행합니다.

2. Ubuntu 업데이트

Ubuntu 터미널에서 시스템 패키지를 최신 상태로 업데이트합니다:

 
sudo apt update && sudo apt upgrade -y

3. Docker 설치에 필요한 패키지 설치

Docker 설치를 위해 몇 가지 필수 패키지를 설치합니다:

 
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

4. Docker 공식 GPG 키 추가

Docker의 공식 저장소를 추가하려면 GPG 키를 설정해야 합니다:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

키가 추가되면 아래와 같이 'OK' 를 확인할 수 있습니다. 

 

5. Docker 저장소 추가

Ubuntu에 Docker의 공식 저장소를 추가합니다:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable"

 

6. Docker 설치

이제 Docker를 설치합니다:

sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io

7. Docker 서비스 시작 및 확인

Docker가 제대로 설치되었는지 확인하고 서비스를 시작합니다:

Docker 서비스 시작:

 
sudo service docker start

Docker 버전 확인:

 
docker --version

예: Docker version 20.10.24 같은 출력이 나오면 성공입니다.

8. sudo 없이 Docker 사용 (선택)

Docker 명령어를 sudo 없이 실행하려면 현재 사용자를 Docker 그룹에 추가합니다:

 
sudo usermod -aG docker $USER

이후 WSL(Ubuntu) 터미널을 재시작하거나 로그아웃 후 다시 로그인하세요.

9. 테스트

Docker가 잘 작동하는지 확인하려면 다음 명령어를 실행:

docker run hello-world

"Hello from Docker!" 메시지가 출력되면 설치가 완료된 것입니다.

추가 참고

  • WSL에서는 Docker Desktop을 설치할 필요가 없습니다. 위 방법은 Ubuntu 내에서 네이티브 Docker를 설치하는 방식입니다.
  • 만약 WSL과 Docker Desktop을 함께 사용하고 싶다면, Windows에 Docker Desktop을 설치하고 WSL 통합 옵션을 활성화하는 방법도 있습니다. 이 경우 Docker Desktop 설정에서 "Use WSL 2 based engine"과 Ubuntu 통합을 체크하세요.
반응형
728x90
반응형

WSL의 Ubuntu 환경에서 Docker Compose를 설치하려면 아래 단계를 따라 진행하면 됩니다. Docker Compose는 Docker 컨테이너를 정의하고 실행하기 위한 도구로, 단일 명령어로 여러 컨테이너를 관리할 수 있게 해줍니다. 최신 버전인 Docker Compose v2를 설치하는 방법을 중심으로 설명하겠습니다.


1. 사전 요구 사항 확인

Docker가 이미 설치되어 있어야 합니다. 설치 여부를 확인하려면:

docker --version

출력이 나오면 Docker가 설치된 상태입니다. 설치되지 않았다면 이전 답변을 참고해 설치하세요.

  • WSL에서 Ubuntu가 실행 중인지 확인하세요.

2. Docker Compose 설치

Docker Compose는 독립적인 바이너리 파일로 제공되며, 공식 GitHub 릴리스에서 다운로드해 설치합니다. 아래는 최신 버전을 설치하는 방법입니다.

(1) 최신 버전 확인 및 다운로드

Docker Compose의 최신 버전을 GitHub에서 가져옵니다. 2025년 3월 기준으로 최신 안정 버전을 사용하지만, 필요 시 Docker Compose GitHub Releases에서 최신 버전을 확인하세요.

다음 명령어를 실행:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 설명:
    • $(uname -s): 운영 체제 이름(Linux).
    • $(uname -m): 머신 아키텍처(예: x86_64).
    • /usr/local/bin/: 시스템 전체에서 실행 가능한 경로.

(2) 실행 권한 부여

다운로드한 파일에 실행 권한을 추가합니다:

sudo chmod +x /usr/local/bin/docker-compose

(3) 설치 확인

Docker Compose가 제대로 설치되었는지 확인합니다:

docker-compose --version
  • 예: Docker Compose version v2.24.7 같은 출력이 나오면 성공입니다.

3. Docker Compose v2 사용 (권장)

최신 Docker에서는 docker-compose standalone 대신 Docker 플러그인 형태의 docker compose (띄어쓰기 주의)가 기본으로 권장됩니다. 이 경우 별도 바이너리 설치 없이 Docker와 함께 제공됩니다.

(1) Docker Compose v2 확인

Docker가 최신 버전이라면 이미 포함되어 있을 수 있습니다. 다음 명령어로 확인:

docker compose version
  • 출력이 나오면 별도 설치 없이 바로 사용 가능합니다.

(2) 기존 docker-compose와의 차이

  • docker-compose (하이픈 포함): 독립형 설치.
  • docker compose (띄어쓰기): Docker 내장 플러그인.
  • v2를 선호한다면 명령어에서 docker compose를 사용하세요.

4. 테스트

Docker Compose가 잘 작동하는지 간단한 예제로 확인합니다:

테스트용 docker-compose.yml 파일 생성:

echo -e "version: '3'\nservices:\n web:\n image: nginx\n ports:\n - '80:80'" > docker-compose.yml

실행:

docker-compose up

또는 v2 플러그인 사용 시:

docker compose up
  1. 브라우저에서 http://localhost에 접속해 Nginx 환영 페이지가 보이면 성공입니다.

종료하려면 Ctrl+C를 누르고, 컨테이너 정리:

docker-compose down

5. 문제 해결

  • "command not found" 오류:

/usr/local/bin/docker-compose가 PATH에 포함되었는지 확인:

echo $PATH

포함되지 않았다면 추가:

export PATH=$PATH:/usr/local/bin

영구 적용하려면 ~/.bashrc에 추가하세요.

권한 문제: sudo 없이 실행하려면 Docker 그룹에 사용자를 추가하세요:

sudo usermod -aG docker $USER

결론

  • 독립형 설치: docker-compose 바이너리를 수동으로 다운로드해 설치.
  • 플러그인 방식: Docker와 함께 제공되는 docker compose 사용 (권장). 필요에 따라 원하는 방식을 선택하세요. 
반응형
728x90
반응형
Docker Swarm과 Kubernetes는 둘 다 컨테이너 오케스트레이션 도구로, 여러 머신에 걸쳐 컨테이너를 관리하고 배포하는 데 사용됩니다. 하지만 설계 철학, 기능, 복잡도, 사용 사례에서 차이가 있습니다. 

 

핵심 차이: 비유로 풀어보기

  • Swarm: 작은 카페를 운영한다고 생각해보세요. 테이블 몇 개, 직원 몇 명으로 간단히 돌아가요. 메뉴 추가하거나 손님 늘 때 손쉽게 대응 가능.
  • Kubernetes: 대형 프랜차이즈 레스토랑 체인을 운영하는 수준이에요. 주방, 서빙, 재고 관리까지 체계적으로 운영되고, 지점마다 상황에 맞춰 자동으로 조정돼요.
 

1. Docker Swarm

"Docker의 친형제" 같은 느낌이에요. Docker를 쓰다 보면 자연스럽게 "스웜 모드"로 몇 대 서버를 묶어서 관리할 수 있어요. 간단히 말하면, "쉽고 빠르게 클러스터 만들기"에 초점.

 

  • 정의: Docker에서 제공하는 기본 오케스트레이션 도구로, Docker와 통합되어 있습니다.
  • 특징:간단함: Docker 명령어만 알면 쉽게 시작 가능(docker swarm init, docker service create 등).
    • 설치: 별도 설치 없이 Docker만 있으면 "스웜 모드" 활성화로 바로 사용.
    • 규모: 소규모 또는 중간 규모 클러스터에 적합.
    • 기능: 기본적인 로드 밸런싱, 서비스 스케일링, 노드 간 장애 복구 제공.
    • 비유: "집에서 가족끼리 간단히 밥상 차리는 느낌" – 빠르고 직관적.
  • 장점:
    • Docker와 바로 연동되니 학습 곡선이 완만함.
    • 설정이 간단해서 빠르게 띄울 수 있음.
  • 단점:
    • 복잡한 환경(예: 수백 개 노드)에서는 기능이 부족.
    • 커뮤니티와 생태계가 Kubernetes에 비해 작음.

2. Kubernetes (K8s)

"컨테이너 세계의 왕" 같은 존재예요. 대규모 시스템을 정밀하게 다룰 수 있게 설계됐고, 복잡한 요구사항(자동 확장, 모니터링, 네트워크 관리 등)을 다 해결하려는 만능 도구죠.
  • 정의: Google에서 개발한 오픈소스 오케스트레이션 플랫폼으로, 현재 업계 표준으로 자리잡음.
  • 특징:
    • 복잡함: 설정과 개념(Pod, Deployment, Service 등)을 익혀야 함.
    • 설치: 별도 설치 필요(Minikube로 로컬 테스트 가능, 실제론 클러스터 구축 필요).
    • 규모: 대규모, 복잡한 환경에 최적화.
    • 기능: 자동 스케일링(HPA), 셀프 힐링, 롤링 업데이트, 네트워크 정책, 모니터링 통합 등 풍부.
    • 비유: "대규모 레스토랑에서 주방, 서빙, 재고까지 체계적으로 관리하는 느낌" – 강력하지만 준비가 필요.
  • 장점:
    • 거의 무한한 확장성과 세밀한 제어 가능.
    • 거대한 커뮤니티와 생태계(Helm, Prometheus 등).
  • 단점:
    • 초기 설정과 학습이 어려움.
    • 소규모 프로젝트엔 과도할 수 있음(오버킬).

간단 비교

  • 시작 난이도: Swarm은 "바로 시작", Kubernetes는 "공부하고 시작".
  • 규모: Swarm은 소규모 팀, Kubernetes는 대기업급 프로젝트.
  • 기능: Swarm은 기본 제공, Kubernetes는 끝없는 확장성.
  • 유연성: Swarm은 단순함, Kubernetes는 세밀함.

주요 차이점 정리

항목 Docker Swarm Kubernetes
사용 난이도 쉬움 (Docker 기반) 어려움 (새로운 개념 학습 필요)
설치 Docker에 포함 별도 설치 및 설정 필요
규모 소~중규모 중~대규모
기능 기본적인 오케스트레이션 고급 기능 다수 지원
생태계 작음 매우 큼 (도구, 플러그인 풍부)
속도 빠른 배포 가능 설정에 시간 걸림

 


실제 예시

  • Docker Swarm: "5대 서버로 웹 앱을 띄우고 트래픽 분산만 하면 돼" → Swarm으로 간단히 해결.
  • Kubernetes: "100대 서버에 데이터베이스, 웹 앱, 캐시를 나눠 배포하고, 트래픽 급등 시 자동 확장해야 해" → Kubernetes가 적합.

 

결론 - 뭐 쓸까? 

  • Docker Swarm은 간단하고 빠르게 오케스트레이션을 시작하고 싶을 때 좋습니다. Docker를 이미 쓰고 있다면 자연스럽게 확장할 수 있는 선택지.
    • "작은 팀, 빠른 배포 필요" → Docker Swarm.
  • Kubernetes는 복잡하고 대규모 시스템을 관리해야 하거나, 장기적으로 탄탄한 인프라를 구축하고 싶을 때 강력한 선택입니다. 대신 초기 투자(시간, 학습)가 필요.
    • "큰 시스템, 장기적인 안정성 필요" → Kubernetes.

       

상황에 따라 선택하면 되는데, 소규모라면 Swarm, 대규모거나 미래 확장을 고려한다면 Kubernetes를 추천.

반응형
728x90
반응형
반응형

선행지식 : docker, docker-compose 

아래 docker-compose 파일 통해서 mongoDB를 생성한다. 

docker-compose.yml

# 파일 규격 버전
version: "3"
# 이 항목 밑에 실행하려는 컨테이너 들을 정의
services: 
  # 서비스 명
  mongodb:
    # 사용할 이미지
    image: mongo
    # 컨테이너 실행 시 재시작
    restart: always
    # 컨테이너 이름 설정
    container_name: mymongo
    # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
    ports:
      - "27017:27017"
    # -e 옵션
    environment: 
      # MongoDB 계정 및 패스워드 설정 옵션
      MONGO_INITDB_ROOT_USERNAME: yourid
      MONGO_INITDB_ROOT_PASSWORD: yourpassword
    volumes:
      # -v 옵션 (다렉토리 마운트 설정)
      - ./mongodb/data/db:/data/db

 

도커를 통해 mongoDB에 접속하기
docker exec -it [컨테이너이름] /bin/bash

mongoDB를 생성할 때 환경변수로 저장했던 계정을 아래와 같이 입력해주기

mongosh -u "yourid" -p "yourpassword"

아래와 같이 화면이 뜨면 

show dbs;

위 명령어를 통해서 설치된 DB목록을 볼 수 있다. 

 

 

참고 : 도커(Docker)로 MongoDB 서버 구축하기 - 정우일 블로그 (wooiljeong.github.io) 

반응형
728x90
반응형

 

 

Mailgun과 SendGrid는 두 개의 메일 전송 서비스입니다. 이 두 서비스는 여러 가지 방식으로 서로 다릅니다.

  • 제공 서비스: Mailgun은 메일 전송, 메일 유효성 검사, 이메일 로그 분석 등의 서비스를 제공합니다. 반면, SendGrid는 이메일 마케팅, 이메일 지킴이, 이메일 기반 앱 개발 등의 서비스를 제공합니다.
  • 요금: Mailgun과 SendGrid의 요금은 서로 다릅니다. Mailgun은 전송한 이메일의 수에 따라 요금이 정해집니다. 반면, SendGrid는 월간 전송량에 따라 요금이 정해집니다.
  • 기타: Mailgun은 오픈 소스 솔루션을 제공하며, 코드를 직접 작성하여 이메일을 전송할 수 있습니다. 반면, SendGrid는 제공하는 API를 이용하여 이메일을 전송할 수 있습니다.

두 서비스 모두 이메일 전송을 위한 유용한 솔루션이며, 사용자의 요구에 따라 적합한 솔루션을 선택할 수

 

====
 
 
 
도커 Mailgun 설치 방법 알려줘
 
 
 

도커 컨테이너에서 Mailgun을 설치하는 방법은 다음과 같습니다.

  1. 도커 컨테이너를 실행합니다. 예를 들어, docker run -it ubuntu:latest /bin/bash를 입력하여 우분투 컨테이너를 실행합니다.
  2. Mailgun API 키를 발급받습니다. Mailgun 계정을 만들고 API 키를 발급받습니다.
  3. Mailgun 모듈을 설치합니다. pip install mailgun-python 명령어를 입력하여 Mailgun 모듈을 설치합니다.
  4. Mailgun API 키를 설정합니다. 다음 코드를 사용하여 Mailgun API 키를 설정합

 

----

 

how can i setup Mailgun with Docker container ?
 
 

To set up Mailgun with a Docker container, you can follow these steps:

  1. Start a Docker container. For example, run the command docker run -it ubuntu:latest /bin/bash to start an Ubuntu container.
  2. Install the Mailgun package. In the case of Ubuntu, you can use the command apt-get install python-mailgun to install the Mailgun package.
  3. Obtain an API key from Mailgun. This can be done on the Mailgun website.
  4. Write a script that uses the Mailgun API to send emails. You will need to use the API key obtained in the previous step in your script.
  5. Use the script to send emails through the Mailgun service. You can do this by running the script inside the Docker container.

With these steps, you should be able to use Mailgun to send emails from a Docker container. It is important to note that this is just one way to set up Mailgun with a Docker container, and there may be other methods that work as well.

 

 

반응형
728x90
반응형

nginx proxy manager 를 통해 jupyter server를 띄우고, 실행하려니 

kernel이 connecting 상태에서 연결이 안되고 있었음 

원인이 무엇인지 계속 검색해보다 아래 링크에서 websocket이라는 단어를 보고 단서를 얻음 -> npm 관리자페이지에서 websocket support 를 활성화 시켜주니 연결됨! 

 

 

 

 

https://www.codeit.kr/community/threads/5067

 

주피터 노트북 실행 에러 | 코드잇

주피터 노트북을 다른곳에서는 많이 써봣는데 로컬에서는 처음 돌려봅니다. 그런데 실행이 되질 않네요. 에러를 해결하려고 구글링도 많이 해봣는데 잘 모르겠어요.파이참으로 파이썬 프로젝

www.codeit.kr

 
반응형
728x90
반응형

syslog를 확인하려는데, 아래와 같이 docker runtime 로그로 가득차있어서, 검색해보니 다른 사용자들도 비슷한 이슈를 겪는 것 같았음. 

/var/log/syslog 파일이 docker 로그로 꽉차있음

 

아래 명령어를 통해 vi로 journald.conf 파일을 수정 

sudo vi /etc/systemd/journald.conf

 

중간에 MaxLevelStoreMaxLevelSyslog 부분의 주석을 해제하고 notice로 바꿔준 다음 저장. 

journald.conf 파일 수정내용

 

아래 명령어로 systemd 재시작 해줌

sudo systemctl restart systemd-journald

 

 

참고 : https://stackoverflow.com/questions/63622619/docker-flooding-syslog-with-run-docker-runtime-logs

 

Docker flooding syslog with run-docker-runtime logs

I've google this, but so far no way to fix it. My syslog under /var/log is being flooded every second with messages like this; Aug 27 20:58:27 mail-server systemd[1]: run-docker-runtime\x2drunc-moby-

stackoverflow.com

 

 

https://github.com/systemd/systemd/issues/6432

 

Filter mechanism for logs in journald · Issue #6432 · systemd/systemd

Submission type Request for enhancement (RFE) systemd version the issue has been seen with 234 Used distribution irrelevant Description A possibility to filter logs in journald, i.e., before they a...

github.com

 

반응형
728x90
반응형

대충 아래와 같은 에러가 뜨면서 Docker에서 컨테이너가 stop되지 않거나 remove 되지 않을 때 

ERROR: for yattyadocker_web_1  cannot stop container: 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: Cannot kill container 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: rpc error: code = PermissionDenied desc = permission denied
 

 

아래 명령어를 실행한 후 컨테이너 제거하면 정상 제거 됨 

 

sudo aa-remove-unknown
반응형

+ Recent posts