記事を読んでいただきありがとうございます。
モブエンジニア(@mob-engineer)です。
minIOを触る機会がありましたので、
AWS EC2で動かす方法について簡単にまとめてみました。
minIOとは
MinIOは、GNU AGPL v3.0ライセンスに基づいてリリースされた、高性能でS3互換のオブジェクトストレージソリューションです。スピードとスケーラビリティを重視して設計されており、業界をリードするパフォーマンスでAI/ML、アナリティクス、そしてデータ集約型のワークロードをサポートします。
S3 API互換 - 既存のS3ツールとのシームレスな統合
AIと分析向けに構築 – 大規模データパイプライン向けに最適化
高性能 - 要求の厳しいストレージ ワークロードに最適です。
このREADMEでは、MinIOをソースからビルドし、ベアメタルハードウェアにデプロイする手順を説明します。MinIOドキュメントプロジェクトを使用して、ドキュメントのローカルコピーをビルドしてホストしてください。
ざっくり言えば「OSSでS3を動かすことが出来るサービス」と思ってもらえれば分かりやすいと思います。S3を利用できないときの検証用ツール、コンテナ環境でストレージを利用したいときに利用するケースが考えられると思います。
EC2で動かす方法
あらかじめEC2を構築しておきましょう
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
[ec2-user@ip-172-31-7-166 ~]$
公式ドキュメントを読んでみるとDockerを利用して構築する旨が書いているためDockerをインストールしましょう。
sudo dnf update -y
sudo dnf install docker -y
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
sudo usermod -a -G docker ec2-user
newgrp docker
docker --version
docker ps
実行結果
[ec2-user@ip-172-31-7-166 ~]$ sudo dnf update -y
Amazon Linux 2023 Kernel Livepatch repository 272 kB/s | 29 kB 00:00
Dependencies resolved.
Nothing to do.
Complete!
[ec2-user@ip-172-31-7-166 ~]$ sudo dnf install docker -y
Last metadata expiration check: 0:00:03 ago on Wed Nov 12 15:09:04 2025.
Dependencies resolved.
=============================================================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================================================
Installing:
docker x86_64 25.0.13-1.amzn2023.0.2 amazonlinux 46 M
Installing dependencies:
container-selinux noarch 4:2.242.0-1.amzn2023 amazonlinux 58 k
containerd x86_64 2.1.4-1.amzn2023.0.2 amazonlinux 23 M
iptables-libs x86_64 1.8.8-3.amzn2023.0.2 amazonlinux 401 k
iptables-nft x86_64 1.8.8-3.amzn2023.0.2 amazonlinux 183 k
libcgroup x86_64 3.0-1.amzn2023.0.1 amazonlinux 75 k
libnetfilter_conntrack x86_64 1.0.8-2.amzn2023.0.2 amazonlinux 58 k
libnfnetlink x86_64 1.0.1-19.amzn2023.0.2 amazonlinux 30 k
libnftnl x86_64 1.2.2-2.amzn2023.0.2 amazonlinux 84 k
pigz x86_64 2.5-1.amzn2023.0.3 amazonlinux 83 k
runc x86_64 1.3.3-2.amzn2023.0.1 amazonlinux 3.9 M
Transaction Summary
=============================================================================================================================================================
Install 11 Packages
Total download size: 74 M
Installed size: 280 M
Downloading Packages:
(1/11): container-selinux-2.242.0-1.amzn2023.noarch.rpm 1.8 MB/s | 58 kB 00:00
(2/11): iptables-libs-1.8.8-3.amzn2023.0.2.x86_64.rpm 16 MB/s | 401 kB 00:00
(3/11): iptables-nft-1.8.8-3.amzn2023.0.2.x86_64.rpm 6.3 MB/s | 183 kB 00:00
(4/11): libcgroup-3.0-1.amzn2023.0.1.x86_64.rpm 2.4 MB/s | 75 kB 00:00
(5/11): libnetfilter_conntrack-1.0.8-2.amzn2023.0.2.x86_64.rpm 2.7 MB/s | 58 kB 00:00
(6/11): libnfnetlink-1.0.1-19.amzn2023.0.2.x86_64.rpm 1.5 MB/s | 30 kB 00:00
(7/11): libnftnl-1.2.2-2.amzn2023.0.2.x86_64.rpm 3.5 MB/s | 84 kB 00:00
(8/11): pigz-2.5-1.amzn2023.0.3.x86_64.rpm 3.0 MB/s | 83 kB 00:00
(9/11): runc-1.3.3-2.amzn2023.0.1.x86_64.rpm 63 MB/s | 3.9 MB 00:00
(10/11): containerd-2.1.4-1.amzn2023.0.2.x86_64.rpm 65 MB/s | 23 MB 00:00
(11/11): docker-25.0.13-1.amzn2023.0.2.x86_64.rpm 69 MB/s | 46 MB 00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 106 MB/s | 74 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : runc-1.3.3-2.amzn2023.0.1.x86_64 1/11
Installing : containerd-2.1.4-1.amzn2023.0.2.x86_64 2/11
Running scriptlet: containerd-2.1.4-1.amzn2023.0.2.x86_64 2/11
Installing : pigz-2.5-1.amzn2023.0.3.x86_64 3/11
Installing : libnftnl-1.2.2-2.amzn2023.0.2.x86_64 4/11
Installing : libnfnetlink-1.0.1-19.amzn2023.0.2.x86_64 5/11
Installing : libnetfilter_conntrack-1.0.8-2.amzn2023.0.2.x86_64 6/11
Installing : iptables-libs-1.8.8-3.amzn2023.0.2.x86_64 7/11
Installing : iptables-nft-1.8.8-3.amzn2023.0.2.x86_64 8/11
Running scriptlet: iptables-nft-1.8.8-3.amzn2023.0.2.x86_64 8/11
Installing : libcgroup-3.0-1.amzn2023.0.1.x86_64 9/11
Running scriptlet: container-selinux-4:2.242.0-1.amzn2023.noarch 10/11
Installing : container-selinux-4:2.242.0-1.amzn2023.noarch 10/11
Running scriptlet: container-selinux-4:2.242.0-1.amzn2023.noarch 10/11
sudo systemctl start docker
Running scriptlet: docker-25.0.13-1.amzn2023.0.2.x86_64 11/11
Installing : docker-25.0.13-1.amzn2023.0.2.x86_64 11/11
Running scriptlet: docker-25.0.13-1.amzn2023.0.2.x86_64 11/11
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /usr/lib/systemd/system/docker.socket.
Running scriptlet: container-selinux-4:2.242.0-1.amzn2023.noarch 11/11
Running scriptlet: docker-25.0.13-1.amzn2023.0.2.x86_64 11/11
Verifying : container-selinux-4:2.242.0-1.amzn2023.noarch 1/11
Verifying : containerd-2.1.4-1.amzn2023.0.2.x86_64 2/11
Verifying : docker-25.0.13-1.amzn2023.0.2.x86_64 3/11
Verifying : iptables-libs-1.8.8-3.amzn2023.0.2.x86_64 4/11
Verifying : iptables-nft-1.8.8-3.amzn2023.0.2.x86_64 5/11
Verifying : libcgroup-3.0-1.amzn2023.0.1.x86_64 6/11
Verifying : libnetfilter_conntrack-1.0.8-2.amzn2023.0.2.x86_64 7/11
Verifying : libnfnetlink-1.0.1-19.amzn2023.0.2.x86_64 8/11
Verifying : libnftnl-1.2.2-2.amzn2023.0.2.x86_64 9/11
Verifying : pigz-2.5-1.amzn2023.0.3.x86_64 10/11
Verifying : runc-1.3.3-2.amzn2023.0.1.x86_64 11/11
Installed:
container-selinux-4:2.242.0-1.amzn2023.noarch containerd-2.1.4-1.amzn2023.0.2.x86_64 docker-25.0.13-1.amzn2023.0.2.x86_64
iptables-libs-1.8.8-3.amzn2023.0.2.x86_64 iptables-nft-1.8.8-3.amzn2023.0.2.x86_64 libcgroup-3.0-1.amzn2023.0.1.x86_64
libnetfilter_conntrack-1.0.8-2.amzn2023.0.2.x86_64 libnfnetlink-1.0.1-19.amzn2023.0.2.x86_64 libnftnl-1.2.2-2.amzn2023.0.2.x86_64
pigz-2.5-1.amzn2023.0.3.x86_64 runc-1.3.3-2.amzn2023.0.1.x86_64
Complete!
[ec2-user@ip-172-31-7-166 ~]$ sudo systemctl start docker
[ec2-user@ip-172-31-7-166 ~]$ sudo systemctl enable docker
sudo systemctl status docker
sudo usermod -a -G docker ec2-user
newgrp docker
docker --version
docker ps
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
Active: active (running) since Wed 2025-11-12 15:10:28 UTC; 24s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 27067 (dockerd)
Tasks: 9
Memory: 29.7M
CPU: 308ms
CGroup: /system.slice/docker.service
mq27067 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536
Nov 12 15:10:27 ip-172-31-7-166.ap-northeast-1.compute.internal systemd[1]: Starting docker.service - Docker Application Container Engine...
Nov 12 15:10:27 ip-172-31-7-166.ap-northeast-1.compute.internal dockerd[27067]: time="2025-11-12T15:10:27.619756479Z" level=info msg="Starting up"
Nov 12 15:10:27 ip-172-31-7-166.ap-northeast-1.compute.internal dockerd[27067]: time="2025-11-12T15:10:27.673219902Z" level=info msg="Loading containers: st>
Nov 12 15:10:28 ip-172-31-7-166.ap-northeast-1.compute.internal dockerd[27067]: time="2025-11-12T15:10:28.125645726Z" level=info msg="Loading containers: do>
Nov 12 15:10:28 ip-172-31-7-166.ap-northeast-1.compute.internal dockerd[27067]: time="2025-11-12T15:10:28.154846532Z" level=info msg="Docker daemon" commit=>
Nov 12 15:10:28 ip-172-31-7-166.ap-northeast-1.compute.internal dockerd[27067]: time="2025-11-12T15:10:28.155071437Z" level=info msg="Daemon has completed i>
Nov 12 15:10:28 ip-172-31-7-166.ap-northeast-1.compute.internal dockerd[27067]: time="2025-11-12T15:10:28.197832570Z" level=info msg="API listen on /run/doc>
Nov 12 15:10:28 ip-172-31-7-166.ap-northeast-1.compute.internal systemd[1]: Started docker.service - Docker Application Container Engine.
[ec2-user@ip-172-31-7-166 ~]$
Dockerインストールが完了したら、Docker Composeをインストールしましょう。
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
実行結果
[ec2-user@ip-172-31-7-166 ~]$ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 73.0M 100 73.0M 0 0 49.8M 0 0:00:01 0:00:01 --:--:-- 101M
Docker Compose version v2.40.3
[ec2-user@ip-172-31-7-166 ~]$
以下手順に沿ってminIOを起動させましょう。
mkdir -p ~/minio
cd ~/minio
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
minio:
image: quay.io/minio/minio
container_name: minio
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin123
volumes:
- ./data:/data
command: server /data --console-address ":9001"
restart: unless-stopped
EOF
docker-compose up -d
実行結果
[ec2-user@ip-172-31-7-166 ~]$ mkdir -p ~/minio
cd ~/minio
[ec2-user@ip-172-31-7-166 minio]$ cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
minio:
image: quay.io/minio/minio
container_name: minio
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin123
volumes:
- ./data:/data
command: server /data --console-address ":9001"
restart: unless-stopped
EOF
[ec2-user@ip-172-31-7-166 minio]$ docker-compose up -d
WARN[0000] /home/ec2-user/minio/docker-compose.yml: the attribute `version` is o bsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 1/10
[+] Running 2/10⠀⠀⠀] Pulling 3.1s
⠙ minio [⠀⣿⣿⠀⠀⠀⠀⠀⠀] Pulling 3.2s
[+] Running 2/107 Downloading 80kB/7.241MB 0.6s
⠹ minio [⣿⣿⣿⠀⠀⠀⠀⠀⠀] Pulling 3.3s
[+] Running 2/107 Extracting 98.3kB/7.241MB 0.7s
⠸ minio [⣿⣿⣿⠀⠀⠀⠀⠀⠀] Pulling 3.4s
[+] Running 2/107 Extracting 2.163MB/7.241MB 0.8s
⠼ minio [⣿⣿⣿⠀⠀⠀⠀⠀⠀] Pulling 3.5s
[+] Running 2/107 Extracting 5.8MB/7.241MB 0.9s
⠴ minio [⣿⣿⣿⠀⠀⠀⠀⠀⠀] Pulling 3.6s
[+] Running 3/1027 Pull complete 1.0s
⠦ minio [⣿⣿⣿⠀⠀⠀⠀⠀⠀] Pulling 3.7s
✔ b83ce1c86227 Pull complete 1.0s [+] Running 4/1076 Download complete 0.5s
⠧ minio [⣿⣿⣿⠀⣤⣿⠀⠀⠀] Pulling 3.8s
✔ b83ce1c86227 Pull complete 1.0s ✔ 81260b173076 Pull complete 1.1s
[+] Running 5/10a3 Pull complete 1.1s
⠇ minio [⣿⣿⣿⡀⣿⣿⠀⠀⠀] Pulling 3.9s
✔ b83ce1c86227 Pull complete 1.0s ⠋ 71e9fc939447 Waiting 1.1s
✔ f94d28849fa3 Pull complete 1.1s [+] Running 5/104 Downloading 5.663MB/11.19MB 1.2s
⠏ minio [⣿⣿⣿⣤⣿⣿⠀⠀⠀] Pulling 4.0s
✔ b83ce1c86227 Pull complete 1.0s ⠹ f9c0805c25ee Downloading 9.65MB/39.45MB 1.3s
✔ f94d28849fa3 Pull complete 1.1s [+] Running 7/108 Waiting 1.2s
⠸ minio [⣿⣿⣿⣿⣿⣿⣿⣿⠀] Pulling 4.4s
✔ b83ce1c86227 Pull complete 1.0s ✔ f94d28849fa3 Pull complete 1.1s
✔ f94d28849fa3 Pull complete 1.1s ⠦ f9c0805c25ee Extracting 8.946MB/39.45MB 1.7s
✔ 81260b173076 Pull complete 1.1s[+] Running 7/1047 Download complete 1.2s
⠼ minio [⣿⣿⣿⣿⣿⣿⣿⣿⠀] Pulling 4.5s
✔ b83ce1c86227 Pull complete 1.0s ⠦ 34013573f278 Waiting 1.7s
✔ f94d28849fa3 Pull complete 1.1s
✔ 81260b173076 Pull complete 1.1s[+] Running 7/10
⠴ minio [⣿⣿⣿⣿⣿⣿⣿⣿⠀] Pulling 4.6s
✔ b83ce1c86227 Pull complete 1.0s ⠧ 34013573f278 Waiting 1.8s
✔ f94d28849fa3 Pull complete 1.1s
✔ 81260b173076 Pull complete 1.1s[+] Running 8/10
⠦ minio [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 39.6MB / 62.23MB Pulling 4.7s
✔ b83ce1c86227 Pull complete 1.0s ⠇ 34013573f278 Waiting 1.9s
✔ f94d28849fa3 Pull complete 1.1s
✔ 81260b173076 Pull complete 1.1s
[+] Running 8/10e Extracting [===============================> ] 24.71MB/39.45MB 2.1s
⠧ minio [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 45.13MB / 62.23MB Pulling 4.8s
✔ b83ce1c86227 Pull complete 1.0s ✔ 71e9fc939447 Download complete 1.2s
✔ f94d28849fa3 Pull complete 1.1s ✔ c1bc68842c41 Download complete 1.6s
✔ 81260b173076 Pull complete 1.1s ✔ 0288b5a0d7e7 Download complete 1.7s
[+] Running 8/10e Extracting [======================================> ] 30.24MB/39.45MB 2.2s
⠇ minio [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 49.39MB / 62.23MB Pulling 4.9s
✔ b83ce1c86227 Pull complete 1.0s ✔ 71e9fc939447 Download complete 1.2s
✔ f94d28849fa3 Pull complete 1.1s ✔ c1bc68842c41 Download complete 1.6s
✔ 81260b173076 Pull complete 1.1s ✔ 0288b5a0d7e7 Download complete 1.7s
[+] Running 8/10e Extracting [===========================================> ] 34.5MB/39.45MB 2.3s
⠏ minio [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 54.34MB / 62.23MB Pulling 5.0s
✔ b83ce1c86227 Pull complete 1.0s ✔ 71e9fc939447 Download complete 1.2s
✔ f94d28849fa3 Pull complete 1.1s ✔ c1bc68842c41 Download complete 1.6s
✔ 81260b173076 Pull complete 1.1s ✔ 0288b5a0d7e7 Download complete 1.7s
[+] Running 8/10e Extracting [==================================================>] 39.45MB/39.45MB 2.4s
⠋ minio [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 54.34MB / 62.23MB Pulling 5.1s
✔ b83ce1c86227 Pull complete 1.0s ✔ 71e9fc939447 Download complete 1.2s
✔ f94d28849fa3 Pull complete 1.1s ✔ c1bc68842c41 Download complete 1.6s
✔ 81260b173076 Pull complete 1.1s ✔ 0288b5a0d7e7 Download complete 1.7s
[+] Running 8/10ee Pull complete 2.4s
⠙ minio [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 54.34MB / 62.23MB Pulling 5.2s
✔ b83ce1c86227 Pull complete 1.0s ✔ 71e9fc939447 Download complete 1.2s
✔ f94d28849fa3 Pull complete 1.1s ✔ c1bc68842c41 Download complete 1.6s
✔ 81260b173076 Pull complete 1.1s ✔ 0288b5a0d7e7 Download complete 1.7s
[+] Running 8/10ee Pull complete 2.4s
⠹ minio [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 59.86MB / 62.23MB Pulling 5.3s
✔ b83ce1c86227 Pull complete 1.0s ✔ 71e9fc939447 Download complete 1.2s
✔ f94d28849fa3 Pull complete 1.1s ✔ c1bc68842c41 Download complete 1.6s
✔ 81260b173076 Pull complete 1.1s ✔ 0288b5a0d7e7 Download complete 1.7s
[+] Running 8/10ee Pull complete 2.4s
⠸ minio [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 62.23MB / 62.23MB Pulling 5.4s
✔ b83ce1c86227 Pull complete 1.0s ✔ 71e9fc939447 Download complete 1.2s
✔ f94d28849fa3 Pull complete 1.1s ✔ c1bc68842c41 Download complete 1.6s
✔ 81260b173076 Pull complete 1.1s ✔ 0288b5a0d7e7 Download complete 1.7s
[+] Running 10/10e Pull complete 2.4s
✔ minio Pulled 5.5s ✔ 1008deaf6ec4 Pull complete 2.7s
✔ b83ce1c86227 Pull complete 1.0s ✔ 71e9fc939447 Pull complete 2.8s
✔ f94d28849fa3 Pull complete 1.1s ⠦ c1bc68842c41 Extracting [==================================================>] 180.3kB/180.3kB 2.8s
✔ 81260b173076 Pull complete 1.1s
✔ f9c0805c25ee Pull complete 2.4s
✔ 1008deaf6ec4 Pull complete 2.7s
✔ 71e9fc939447 Pull complete 2.8s
✔ c1bc68842c41 Pull complete 2.8s
✔ 0288b5a0d7e7 Pull complete 2.8s
✔ 34013573f278 Pull complete 2.8s
[+] Running 1/2
[+] Running 1/2io_default Created 0.2s
[+] Running 1/2io_default Created 0.2s
[+] Running 1/2io_default Created 0.2s
[+] Running 1/2io_default Created 0.2s
[+] Running 1/2io_default Created 0.2s
[+] Running 1/2io_default Created 0.2s
[+] Running 2/2io_default Created 0.2s
✔ Network minio_default Created 0.2s ⠦ Container minio Starting 0.6s
✔ Container minio Started 0.7s
[ec2-user@ip-172-31-7-166 minio]$
http://:9001でアクセスしましょう。
セキュリティグループのインバウンドグループの開放を行いましょう
ID/pass(minioadmin/minioadmin123)を入力したらホーム画面が表示されます。
以上でminIOをEC2を構築できます。
所感
Dockerを使える環境であればサクッと実装できると思います。実務で使えるかは要確認が必要だと思いますが、PoCであれば使えると思います。ざっと書いてみたので認識齟齬などがあると思いますが、その際ご指摘いただければありがたいです。

