Skip to content

Quản lý container Podman trong FlyEnv: Lựa chọn thay thế Docker không cần root ​

Docker Desktop ngốn quá nhiều RAM? Cần chạy PHP 5.5 hay MySQL 5.6 cũ kỹ mà không còn cài được native? Muốn cách ly container mà không phải trao quyền root cho hệ thống?

Podman chính là câu trả lời. Và FlyEnv biến nó dễ dàng như nhấp vài nút.

Khác với Docker, Podman chạy container ở chế độ rootless theo mặc định—không có daemon chạy với quyền root, không có rủi ro bảo mật từ việc container vượt ra ngoài. Kết hợp với giao diện trực quan của FlyEnv, bạn có được mọi lợi ích của container hóa mà không phải chịu sự phức tạp.

Vì sao dùng Podman thay vì Docker? ​

Các vấn đề của Docker Desktop ​

Vấn đềDocker DesktopPodman + FlyEnv
Mức sử dụng tài nguyên2-4GB RAM khi rảnh200-500MB
Đặc quyền rootDaemon chạy với quyền rootRootless theo mặc định
Gói thuê bao$5-21/tháng cho công tyHoàn toàn miễn phí
Bị khóa vào nhà cung cấpHệ sinh thái chỉ dành cho DockerTương thích OCI (có thể liên hoạt động)
Độ phức tạpNhiều thành phầnMột binary duy nhất

Khi nào nên dùng container trong FlyEnv ​

1. Hỗ trợ phần mềm cũ

Cần PHP 5.5 hay MySQL 5.6 cho một dự án cũ? Các trình quản lý gói hiện đại (Homebrew, MacPorts) đã ngừng hỗ trợ từ nhiều năm trước. Container Podman giữ được các phiên bản này vô thời hạn:

yaml
# docker-compose.yml for legacy stack
version: '3'
services:
  php55:
    image: php:5.5-apache
    volumes:
      - ./legacy-app:/var/www/html
  
  mysql56:
    image: mysql:5.6
    environment:
      MYSQL_ROOT_PASSWORD: root

2. Môi trường phát triển được cách ly

Kiểm thử code không đáng tin mà không rủi ro:

  • Tải một repo GitHub khả nghi? Chạy nó trong container.
  • Site WordPress cũ của khách hàng với các plugin đáng ngờ? Đưa vào container.
  • Thử nghiệm phần mềm mới? Cách ly khỏi hệ thống chính của bạn.

3. Các dự án Docker Compose

Đã có sẵn một docker-compose.yml? Nhập và chạy trực tiếp—không cần thay đổi gì.

Bắt đầu với Podman trong FlyEnv ​

Yêu cầu tiên quyết ​

FlyEnv 4.11.0+ đã bao gồm module Podman. Không cần cài đặt riêng.

Các nền tảng được hỗ trợ:

  • macOS (Intel & Apple Silicon)
  • Windows (qua WSL2)
  • Linux

Tạo máy ảo đầu tiên của bạn ​

Podman trên macOS/Windows đòi hỏi một máy ảo Linux. FlyEnv xử lý việc này tự động:

  1. Mở FlyEnv → module Podman
  2. Đi tới tab VM
  3. Nhấp "Create VM"
  4. Cấu hình tài nguyên:
    • CPU: 2-4 nhân (mặc định: 2)
    • Memory: 2-8GB (mặc định: 2GB)
    • Disk: 20-100GB (mặc định: 50GB)
  5. Nhấp Create và chờ cấp phát

Hộp thoại tạo VM

  1. Chọn máy ảo và nhấp Start

Quản lý VM

Khởi động nhanh với các mẫu có sẵn ​

FlyEnv cung cấp các mẫu được cấu hình sẵn cho những stack phổ biến:

MẫuBao gồmTình huống sử dụng
LAMPApache + PHP + MySQLCác ứng dụng PHP cũ
LEMPNginx + PHP + MySQLCác framework PHP hiện đại
Node.jsNode + MongoDBCác ứng dụng JavaScript
RedisRedis serverLớp bộ đệm
PostgreSQLPostgres + pgAdminPhát triển cơ sở dữ liệu

Để dùng một mẫu:

  1. Đi tới tab Compose
  2. Nhấp "From Template"
  3. Chọn một mẫu
  4. Chọn thư mục đích
  5. Nhấp Create

Chọn mẫu

Mẫu sẽ sinh ra một docker-compose.yml sẵn sàng chạy ngay.

Quản lý các dự án Docker Compose ​

Nhập các dự án có sẵn ​

Đã có một docker-compose.yml? Nhập nó trong vài giây:

  1. Tab Compose → "Import"
  2. Chọn tệp docker-compose.yml của bạn
  3. Dự án xuất hiện trong danh sách
  4. Nhấp Start để khởi chạy toàn bộ dịch vụ

Nhập Compose

Quản lý các dự án đang chạy ​

View quản lý Compose hiển thị:

  • Trạng thái đang chạy/đã dừng
  • Trạng thái của từng dịch vụ
  • Ánh xạ cổng
  • Điểm gắn volume

Các hành động:

  • Start/Stop: Điều khiển toàn bộ stack
  • Restart: Khởi động lại các dịch vụ cụ thể
  • Logs: Xem log theo thời gian thực của từng dịch vụ
  • Delete: Xóa stack (giữ lại các tệp)

Quản lý Compose

Quản lý Compose 2

Xem log ​

  1. Chọn một dự án compose
  2. Nhấp tab Logs
  3. Chọn dịch vụ từ dropdown
  4. Xem đầu ra theo thời gian thực

Lọc theo:

  • Tất cả dịch vụ
  • Một dịch vụ cụ thể
  • Từ khóa tìm kiếm

Log Compose

Log Compose 2

Quản lý container ​

Tạo container ​

Với các container đơn lẻ (không qua Compose):

  1. Tab Containers → "Add"
  2. Cấu hình:
    • Image: Chọn hoặc gõ (ví dụ: nginx:latest)
    • Name: Định danh container
    • Ports: Ánh xạ Host:Container
    • Volumes: Thư mục host:Đường dẫn container
    • Environment: Các biến môi trường
  3. Nhấp Create

Thêm container

Các thao tác với container ​

Hành độngMô tảKhi nào dùng
Start/StopĐiều khiển runtimeVận hành hằng ngày
RestartDừng rồi khởi động lạiÁp dụng thay đổi cấu hình
DeleteXóa containerDọn dẹp container không dùng
ExportLưu thành tệpSao lưu hoặc chuyển giao
CommitLưu thành imageGiữ lại các thay đổi
ExecMở shellChạy lệnh bên trong

Thực thi lệnh trong container ​

Cần chạy một lệnh bên trong container đang chạy?

  1. Chọn container
  2. Nhấp "Exec"
  3. Chọn shell (/bin/bash hoặc /bin/sh)
  4. Chạy lệnh theo kiểu tương tác

Exec container

Exec container 2

Các lệnh phổ biến:

bash
# Check PHP version
php -v

# Install packages
apt-get update && apt-get install -y vim

# Check running processes
ps aux

# View environment variables
env

Quản lý image ​

Tải image ​

  1. Tab Images → "Pull"
  2. Nhập tên image và tag:
    • nginx:latest
    • php:8.2-apache
    • mysql:8.0
  3. Nhấp Pull

Image được tải xuống từ Docker Hub hoặc registry bạn đã cấu hình.

Tải image

Quản lý image local ​

Tab Images hiển thị:

  • Tên repository
  • Tag/phiên bản
  • Kích thước trên đĩa
  • Ngày tạo

Các hành động:

  • Run: Tạo container từ image
  • Delete: Xóa để giải phóng dung lượng
  • Export: Lưu thành tệp tar
  • Import: Nạp từ tệp tar

Danh sách image

Mẹo tiết kiệm dung lượng: Xóa các image không dùng thường xuyên. Một image thông thường chiếm 100MB-1GB.

Các tình huống sử dụng thực tế ​

Chạy PHP 5.5 cũ ​

Một khách hàng có site WordPress 10 năm tuổi chỉ chạy trên PHP 5.5:

yaml
version: '3'
services:
  wordpress:
    image: php:5.5-apache
    volumes:
      - ./client-site:/var/www/html
    ports:
      - "8080:80"
  
  mysql55:
    image: mysql:5.5
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
  1. Lưu thành docker-compose.yml
  2. Nhập vào Podman của FlyEnv
  3. Khởi động các dịch vụ
  4. Truy cập tại http://localhost:8080

Cách ly code không đáng tin ​

Tải một script khả nghi từ Stack Overflow?

bash
# Instead of running directly on your machine...
# Run in a throwaway container

1. Create container with `ubuntu:latest`
2. Mount only the script folder
3. Run the script
4. Delete container when done

Hệ thống máy chủ của bạn vẫn nguyên vẹn.

Thử nghiệm phần mềm mà không cần cài đặt ​

Muốn thử Elasticsearch mà không cần thiết lập phức tạp?

  1. Tải image elasticsearch:8.x
  2. Tạo container với cổng 9200 được ánh xạ
  3. Kiểm thử ứng dụng của bạn
  4. Xóa khi xong—không cần dọn dẹp

Khắc phục sự cố ​

"VM not starting" (macOS/Windows) ​

Nguyên nhân:

  • Không đủ dung lượng đĩa cho máy ảo
  • Chưa bật ảo hóa trong BIOS (Windows)
  • Một máy ảo khác đang xung đột

Giải pháp:

  1. Giải phóng dung lượng đĩa (ít nhất 20GB)
  2. Bật ảo hóa trong BIOS/UEFI
  3. Dừng phần mềm máy ảo khác (VirtualBox, VMware)

"Cannot connect to Docker daemon" ​

Nguyên nhân: Máy ảo chưa chạy

Giải pháp: Khởi động máy ảo trong module Podman trước.

"Port already in use" ​

Nguyên nhân: Cổng host xung đột với một dịch vụ khác

Giải pháp: Đổi cổng host trong cấu hình container/compose:

yaml
ports:
  - "8080:80"  # Instead of 80:80

"Permission denied" khi truy cập volume ​

Nguyên nhân: Quyền của container rootless

Giải pháp:

  1. Dùng named volume thay cho bind mount
  2. Hoặc đặt UID/GID đúng trong các tùy chọn container

Hiệu năng chậm trên macOS ​

Nguyên nhân: Chi phí dịch chuyển hệ thống tệp

Giải pháp:

  1. Dùng cờ mount :cached hoặc :delegated
  2. Loại trừ node_modules khỏi các mount
  3. Dùng SSD cho lưu trữ máy ảo

Podman so với Docker Desktop: So sánh tính năng ​

Tính năngDocker DesktopPodman + FlyEnv
Rootless❌ Không✅ Có
DaemonBắt buộcKhông cần daemon
Docker Compose✅ Có✅ Có
Tương thích imageDocker HubDocker Hub + OCI
Mức sử dụng tài nguyên2-4GB200-500MB
Chi phí$5-21/tháng (doanh nghiệp)Miễn phí
KubernetesTích hợp sẵnQua minikube
Quản lý GUIChỉ có DashboardTích hợp toàn diện

Câu hỏi thường gặp (FAQ) ​

H: Tôi có thể dùng image từ Docker Hub với Podman không?

Đ: Có. Podman tương thích hoàn toàn với Docker Hub và các registry tương thích OCI. Tải và chạy bất kỳ Docker image công khai nào.

H: Tôi có cần học các lệnh mới không?

Đ: Không. CLI của Podman tương thích với Docker. podman run = docker run, podman ps = docker ps, v.v. Nhưng với GUI của FlyEnv, bạn hiếm khi cần dùng CLI.

H: Podman có chậm hơn Docker không?

Đ: Không. Hiệu năng tương đương nhau. Trên Linux, Podman thường nhanh hơn do không có chi phí daemon. Trên macOS/Windows, cả hai đều dùng máy ảo nên hiệu năng tương tự nhau.

H: Tôi có thể chuyển các dự án Docker hiện có không?

Đ: Có. Các tệp Docker Compose hoạt động mà không cần sửa đổi. Đơn giản là nhập và chạy.

H: Có hoạt động với VS Code Dev Containers không?

Đ: Có. Cài Podman CLI và cấu hình VS Code dùng nó thay cho Docker.

H: Làm thế nào để truy cập container từ mạng local của tôi?

Đ: Ánh xạ cổng khi tạo container (ví dụ: host 8080 → container 80). Sau đó truy cập qua http://localhost:8080.

H: Tôi có thể chạy ứng dụng GUI trong container không?

Đ: Có, với cấu hình bổ sung cho X11 forwarding (macOS/Linux). Nhìn chung phù hợp hơn với các ứng dụng server.

H: Máy ảo và container khác nhau thế nào?

Đ: Trong module Podman của FlyEnv: VM là máy ảo Linux (chỉ trên macOS/Windows). Container chạy bên trong máy ảo. Trên Linux, container chạy trực tiếp mà không cần máy ảo.

H: Tôi cần bao nhiêu dung lượng đĩa?

Đ: Máy ảo: 20-50GB. Mỗi image: thường 100MB-1GB. Hãy tính khoảng 100GB tổng cộng để sử dụng thoải mái.

Tóm tắt ​

Module Podman của FlyEnv thu hẹp khoảng cách giữa phát triển native và container hóa:

  • ✅ Chạy phần mềm cũ không còn có sẵn trong các trình quản lý gói
  • ✅ Cách ly code không đáng tin mà không rủi ro cho hệ thống của bạn
  • ✅ Triển khai các dự án Docker Compose chỉ với một cú nhấp
  • ✅ Rootless theo mặc định để bảo mật tốt hơn
  • ✅ Miễn phí mãi mãi không phí thuê bao

Sẵn sàng giảm mức sử dụng tài nguyên của Docker Desktop? Hãy thử Podman trong FlyEnv ngay hôm nay.

Tải xuống FlyEnv — Có sẵn cho macOS, Windows, và Linux

Khám phá thêm các tính năng: