+2

Docker cho người mới bắt đầu (phần 2)

Ở phần này chúng ta sẽ tìm hiểu về Docker volume, docker compose, docker networkdocker swarm.

Docker Volume

Volumes là một cơ chế yêu thích dùng để tạo ra và sử dụng bới Docker containers. Trong khi bind mounts bị phụ thuộc vào cấu trúc thư mục của máy host, volumes hoàn toàn được quản lý bới Docker.

Một số lợi ích khi sử dụng volumes:

  • Dễ dàng back up hoặc migrate hơn khi sử dụng bind mounts.
  • Dễ dàng quản lý volumes với Docker CLI hoặc Docker API.
  • Volumes hoạt động với cả Linux và Windows containers.
  • Sử dụng volumes an toàn hơn khi chia sẻ dữ liệu giữa các containers
  • Dữ liệu của volumes có thể được điền trước bởi container.

Ta sử dụng Docker volume khi:

  • Chia sẻ dữ liệu giữa các containers và giữa containerhost.
  • Dùng để backup dữ liệu vì thông thường các dữ liệu tạo ra bởi container sẽ biến mất khi ta tắt container.
  • Gắn thư mục của host với container.
  • Tăng hiệu năng của container.

Docker compose

Compose là một công cụ để định nghĩa và chạy multi-container Docker applications. Với compose, ta có thể sử dụng YAML file để cấu hình services của application. Với một câu lệnh, ta có thể dễ dàng createstart tất cả các services để chạy ứng dụng.

Compose hoạt động ở tất cả môi trường: production, staging, development, testing, cũng như CI workflows.

Ta có thể sử dụng Compose đơn giản với 3 bước như sau:

  1. Định nghĩa môi trường của ứng dụng với Dockerfile.
  2. Định nghĩa các services cho ứng dụng trong file docker-compose.yml để ta có thể chạy các sercive cùng nhau.
  3. Chạy docker-compose up.

Một file docker-compose.yml sẽ trông như thế này:

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

Giải thích về file .yml một chút:

Thuật ngữ Ý nghĩa
version Phiên bản của docker-compose
services Nơi liệt kê các services
build Sử dụng xây dựng container từ image do mình tự tạo bởi Dockerfile (ở đây Dockerfile sẽ nằm cùng thư mục với file .yml)
ports Cấu hình cổng kết nối (host:container)
volumes Gắn đường dẫn trên host để sử dụng trên container
links Liên kết các services với nhau
image Chỉ ra image được sử dụng cho container

Docker network

Docker network dùng để gắn địa chỉ ip cho các container thông qua một virtual bridge.

Một số kiểu docker network mặc định:

  • Bridge: network driver mặc định. Nếu không xác định một driver. thì Docker tự hiểu là driver này. Thường sử dụng khi ứng dụng chạy trên container riêng lẻ.
  • Hosr: Cho một container độc lập, xóa bỏ sự cô lập giữa docker hostcontainer và dùng chính network của host đó một cách trực tiếp.
  • None: Cho loại container này, ngắt kết nối với tất cả networking. Thường dùng kết hợp với một network driver tùy chỉnh.

Docker swarm

Docker swarm là một nhóm các máy vật lý hoặc máy ảo chạy trên Docker và cùng tham gia một cluster. Bạn có thể chạy các lệnh của Docker thông qua cluster trên swarm manager.

Một số lệnh cơ bản của swarm:

Câu lệnh Ý nghĩa
docker swarm init Khởi tạo một swarm
docker swarm join Thực hiện một máy khác để đưa máy đó vào swarm. Nếu pass token máy đó sẽ đóng vai trò là worker
docker node ls Liệt kê các node trong swarm
docker swarm leave Đưa node ra khỏi swarm

Tổng kết

Như vậy qua bài này ta đã tìm hiểu được:

  • Thế nào là Docker Volume? Tại sao ta lại cần Docker Volume? Ta dùng Docker Volume khi nào?
  • Docker Compose là gì? Cấu trúc của một file .yml
  • Docker Network là gì? Có những kiểu Docker Network mặc định nào?
  • Docker Swam là gì? Một vài câu lệnh cơ bản của Docker Swarm

Tài liệu tham khảo

https://docs.docker.com/compose/

https://docs.docker.com/network/

https://docs.docker.com/engine/swarm/


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí