반응형

먼저 min.io 는 무엇인가? 그리고 어디에 쓰면 좋은가? 에 대해서 살펴보도록 하겠습니다.

 

https://min.io/

 

MinIO | High Performance, Kubernetes Native Object Storage

MinIO's High Performance Object Storage is Open Source, Amazon S3 compatible, Kubernetes Native and is designed for cloud native workloads like AI.

min.io

 

홈페이지에 따르면, min.io는 (aws) S3와 호환되는 고성능의 오브젝트 스토리지 라고 소개하고 있습니다. 즉, 스토리지 서비스를 구축하는데 사용할 수 있는 오픈 소스 솔루션 입니다. S3와 사용법이 거의 유사하게 되어 있어서, S3를 써 보셨던 분들은 매우 쉽게 사용이 가능하며, 스토리지를 처음 써보시는 분들은 약간의 적응이 필요합니다.

 

서비스를 시작하는 방법은 여러가지가 있지만, 저는 docker를 사용해서 서비스를 시작해 보겠습니다. (docker 설치 필요)

 

min.io 서비스를 시작하기 위해서는 docker를 사용하면 되는데, min.io 에서는 podman 커맨드를 제시하고 있어서 혼선을 주고 있습니다. podman 을 별도로 설치하기 귀찮아서 docker-compose.yml 파일을 아래와 같이 작성해 보았습니다.

 

version: '3'
services:
  s3:
    image: minio/minio
    ports:
      - 9000:9000
      - 9001:9001
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: changeme
    volumes:
      - ./storage/minio:/data
    command: server /data --console-address ":9001"

 

서비스 명은 편의상 s3로 하였습니다. 그리고, docker에서 사용할 image 를 지정해 주었고 (minio/minio), 서비스에서 사용될 포트를 매핑해 주었습니다. (9000, 9001)

환경변수로 user, password 를 지정해 주었으며, volume을 지정하여 재시작을 해도 기존에 저장했던 스토리지 정보가 남을 수 있게 해 주었습니다.

시작 커맨드는 버전에 따라 약간씩 상이하다고 하니, 추후에는 변경이 될 수도 있습니다.

 

커맨드 윈도우에서 아래 명령어를 이용해서 서비스를 시작합니다.

> docker-compose -f docker-compose.yml up -d

 

도커 컨테이너가 제대로 실행되어 돌아가면, 브라우저를 열어서 http://localhost:9000 으로 접속을 시도합니다.

요청은 http://localhost:9001로 redirect 되며, 아래와 같은 admin 페이지 로그인 창이 뜹니다.

위의 docker-compose.yml 파일에 설정했던, username, password 를 이용해서 로그인을 합니다.

 

로그인을 하면, 아래와 같은 화면이 나옵니다.

 

위의 화면에서 우측 상단의 Create Bucket 버튼을 클릭해서 Bucket을 생성해 봅니다.

Bucket Name 에 'test'를 입력하고, Create Bucket 버튼을 클릭하여 bucket을 생성합니다. 제대로 생성되면 아래와 같은 화면이 나오게 됩니다.

 

생성된 bucket 에 파일을 드래그해서 업로드 해 봅니다. 아래와 같은 화면이 나오면서 파일이 올라간 것이 화면에 표시됩니다. 업로드 버튼을 클릭해서 폴더도 생성할 수 있고, 파일을 업로드 할 수도 있습니다.

 

업로드 된 파일을 클릭해보면, 화면 우측에 파일을 다운로드, 공유, 삭제하거나 정보를 확인 할 수 있는 창이 나타납니다.

 

Share 아이템을 클릭하면 아래와 같이 특정 기간 동안 유효한 URL을 생성하여 파일을 공유할 수 있습니다.

 

이번 시간에는 docker를 이용해서 min.io 서비스를 설치하고, bucket을 생성하고, 간단하게 파일 업로드 및 공유 기능에 대해서 살펴 보았습니다. 다음 시간에는 node.js를 이용해서 프로그래밍으로 bucket 을 관리하고, 파일 업로드 및 다운로드를 하는 예시를 살펴 보겠습니다.

반응형

+ Recent posts