Docker - những kiến thức cơ bản phần 3

Giới thiệu

5. Docker Hub là gì? Làm thế nào để tạo một Docker Image trên Docker Hub?

6. Các câu lệnh thường dùng để thao tác với docker image?

7. Các câu lệnh thường dùng để thao tác với docker container?

8. Sự khác biệt giữa câu lệnh docker exec và docker run?

9. Sự khác biệt giữa câu lệnh docker run và docker start?

Phần trước: Chúng ta đã tìm hiểu về docker hub (create, push, pull images) cũng như biết thêm các lệnh thường dùng để thao tác docker image, docker container, phân biệt được câu lệnh docker exec, docker run và docker start...Ở phần này cùng tìm hiểu các khái niệm khá là quan trọng, và áp dụng rất nhiều vào các dự án thực tế của docker.

Mục lục

  1. Thế nào là Docker Volume? Tại sao ta lại cần Docker Volume? Ta dùng Docker Volume khi nào?

  2. Docker Compose là gì? Ví dụ về docker compose

  3. Các câu lệnh thường dùng với docker-compose

  4. Docker Network là gì? Có những kiểu Docker Network mặc định nào?

  5. Docker Swam là gì? Một vài câu lệnh cơ bản của Docker Swarm

Nội dung

10. Thế nào là Docker Volume? Tại sao ta lại cần Docker Volume? Ta dùng Docker Volume khi nào?

Thế nào là Docker Volume?

Volume trong Docker được dùng để chia sẻ dữ liệu cho container.

Tại sao ta lại cần Docker Volume?

  • Volumes giản hóa việc backup hoặc migrate hơn bind mount.
  • Bạn có thể quản lý volumes sử dụng các lệnh Docker CLI và Docker API.
  • Volumes làm việc được trên cả Linux và Windows container.
  • Volumes có thể an toàn hơn khi chia sẻ dữ liệu giữa nhiều container.
  • Volume drivers cho phép bạn lưu trữ volumes trên remote hosts or cloud providers, để mã hóa nội dung của volumes, hoặc thêm các chức năng khác.
  • Các nội dung của volume mới có thể được điền trước bởi một container.

Ta dùng Docker Volume khi nào?

  • Sử dụng volume để gắn (mount) một thư mục nào đó trong host với container.
  • Sử dụng volume để chia sẻ dữ liệu giữa host và container
  • Sử dụng volume để chia sẽ dữ liệu giữa các container
  • Backup và Restore volume.

Để xem cách tạo và quản lý Docker Volume: https://docs.docker.com/storage/volumes/#populate-a-volume-using-a-container

11. Docker Compose là gì?

Compose là công cụ giúp định nghĩa và khởi chạy multi-container Docker applications.

Trong Compose, chúng ta sử dụng Compose file để cấu hình application's services. Chỉ với một câu lệnh, lập trình viên có thể dễ dàng create và start toàn bộ các services phục vụ cho việc chạy ứng dụng.

12. Các câu lệnh thường dùng với docker-compose

Cú pháp:

$ docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
$ docker-compose -h|--help

Một số câu lệnh thường dùng:

  • Kiểm tra phiên bản docker-compose:
$ docker-compose version

docker-compose version 1.8.0, build unknown
docker-py version: 1.9.0
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
  • Hiển thị danh sách containers:
$ docker-compose ps

              Name                             Command               State    Ports
-----------------------------------------------------------------------------------
dockercompose01_product-service_1   python api.py                    Exit 1
dockercompose01_website_1           docker-php-entrypoint apac ...   Exit 0

docker-compose version 1.8.0, build unknown
docker-py version: 1.9.0
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
  • Tạo và khởi động containers:
$ docker-compose up
  • Build hoặc rebuild services
$ docker-compose build

Step 1/3 : FROM python:3-onbuild
# Executing 3 build triggers
 ---> Using cache
 ---> Using cache
 ---> Using cache
 ---> 4de6e4065f4b
Step 2/3 : COPY . /usr/src/app
 ---> Using cache
 ---> edf44389cbf5
Step 3/3 : CMD ["python", "api.py"]
 ---> Using cache
 ---> a6d6dba4ebbc
Successfully built a6d6dba4ebbc
Successfully tagged dockercompose01_product-service:latest
website uses an image, skipping
  • Xác nhận hoặc hiển thị file config Compose
$ docker-compose config
  • Loại bỏ, ngừng containers:
$ docker-compose rm

Going to remove dockercompose01_website_1, dockercompose01_product-service_1
Are you sure? [yN] y
Removing dockercompose01_website_1 ... done
Removing dockercompose01_product-service_1 ... done

Tham khảo chi tiết tại đây: https://docs.docker.com/compose/reference/overview

13. Docker Network là gì? Có những kiểu Docker Network mặc định nào?

Docker Network là gì?

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

Có những kiểu Docker Network mặc định nào?

Sau khi cài đặt xong docker, có 3 loại network tự động sẽ được tạo ra, sử dụng câu lệnh để kiểm tra:

$ docker network ls
NETWORK ID          NAME                      DRIVER              SCOPE
04df50d130ed        bridge                    bridge              local
e5275b314ff1        host                      host                local
006951b13154        none                      null                local
  • Bridge: Network driver mặc đinh. Nếu bạn không chỉ định một driver, đây sẽ là một loại của network mà bạn đang tạo. Bridge Networks thường được sử dụng khi ứng dụng của bạn chạy trong các container độc lập mà chúng cần để giao tiếp, truy cập: https://docs.docker.com/network/bridge để xem chi tiết hơn về Bridge Networks.
  • Host: Với các containers độc lập, xóa network cô lập giữa container và docker host , và sử dụng host's network trực tiếp. Host chỉ có trên swarm services phiên bản Docker 17.06 và cao hơn. Xem cách sử dụng của host network: https://docs.docker.com/network/host.
  • None: Với chính container, ngắt kết nối tất cả các netwoking. Thường sử dụng trong kết hợp với một tùy chỉnh network driver. None cũng chỉ có trên swarm services. Chi tiết về none có tại: https://docs.docker.com/network/none/.

14. Docker Swam là gì?

Docker Swam là gì?

Docker swarm là một công cụ giúp chúng ta tạo ra một clustering Docker. Nó giúp chúng ta gom nhiều Docker Engine lại với nhau và ta có thể "nhìn" nó như duy nhất một virtual Docker Engine.

Khi số lượng containers tăng lên việc quản lý, triển khai trở nên phức tạp hơn thì không thể không sử dụng Docker Swarm.

Một vài câu lệnh cơ bản của Docker Swarm

  • docker swarm ca: Hiển thị và xoay root CA

  • docker swarm init: Khởi tạo một swarm

  • docker swarm join: Gia nhập một swarm

  • docker swarm join-token: Quản lý join tokens

  • docker swarm leave: Rời khỏi swarm

  • docker swarm unlock: Unlock swarm

  • docker swarm unlock-key: Quản lý unlock key

  • docker swarm update: Cập nhật swarm

Tham khảo chi tiết tại đây: https://docs.docker.com/engine/reference/commandline/swarm

Lời kết

Trong phần 3 này cơ bản chúng ta đã hiểu sơ qua về Docker colume, docker compose, docker network và docker swarm...Tuy nhiên, việc áp dụng chúng vào các dự án là không hề đơn giản, cần nhiều thời gian tìm hiểu cũng như kinh nghiệm nữa. Mong được sự góp ý từ mọi người, hãy quan tâm và theo dõi series 2018 - Cùng nhau học Docker nhé 😜😜😜

Nguồn:

https://www.docker.com/

https://hub.docker.com/

https://vi.wikipedia.org/wiki/Docker_(phần_mềm)