Các khái niệm cơ bản về Docker cho người mới tìm hiểu

Docker là gì?

Docker là một nền tảng cho các developers để develop, deploy và khởi chạy ứng dụng của mình với container. Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy và phát triển với mỗi dịch vụ trên một hoặc nhiều container khác nhau. Khi cần deploy lên bất kỳ server nào chỉ cần run container của Docker thì ứng dụng của bạn sẽ được khởi chạy ngay lập tức.

Nhờ đó chúng ta sẽ tiết kiệm được rất nhiều thời gian cho việc cài đặt môi trường. Đồng thời, các developers làm việc với nhau sẽ sử dụng thống nhất một môi trường và các hình liên quan, giúp việc teamwork trở nên đồng nhất. Docker đa phần được cài đặt và chạy trên các container nên việc gỡ các gói cài đặt hay thay đổi version,… sẽ không ảnh hưởng gì đến máy tính của bạn cả. Máy tính của bạn sẽ trở nên sạch sẽ hơn.

Vậy nên, hiện nay nhiều công ty tuyển dụng cũng chú trọng đến skill Docker như là một kỹ năng cần có cho một vị trí developer.

Sau đây là các khái niệm chính về Docker mà mình tổng hợp được.
Nó sẽ giúp bạn có những hiểu biết về Docker hơn, nhất là các bạn mới bắt đầu làm quen với công cụ này.

  1. Image:
    Là tên gói cài đặt từ Docker Hub. Khởi chạy từ Dockerfile
  2. Container:
    Một vùng chứa Image đã được cài đặt. Có thể tưởng tượng nó như là một máy tính nhỏ vậy, chứa những gì mà chúng ta muốn lưu tại đó.
  3. Network:
    Tạo ra một đường kết nối giữa các Container với nhau. Nếu như không được khai báo kết nối đến Network thì Container sẽ không thể giao tiếp với các Container khác trong cùng một mạng được. Tương tự như một mạng LAN giữa các máy tính với nhau.
  4. Volumes:
    Nơi chứa data, mã nguồn. Có thể sync với thư mục bất kỳ nào tại máy tính chủ của chúng ta đang sử dụng.
  5. Docker compose:
    Một công cụ giúp chạy build nhiều container một lần, dễ dàng và thuận tiện cho việc quản lý các Container trong một dự án.
  6. Dockerfile:
    Chứa các lệnh để build một docker. Các lệnh thường dùng trong Dockerfile là:

    1. FROM — chỉ định image gốc: php, unbutu, alpine…
    2. LABEL — cung cấp metadata cho image. Có thể sử dụng để add thông tin maintainer. Để xem các label của images, dùng lệnh docker inspect.
    3. ENV — thiết lập một biến môi trường.
    4. RUN — Có thể tạo một lệnh khi build image. Được sử dụng để cài đặt các package vào container.
    5. COPY — Sao chép các file và thư mục vào container.
    6. ADD — Sao chép các file và thư mục vào container.
    7. CMD — Cung cấp một lệnh và đối số cho container thực thi. Các tham số có thể được ghi đè và chỉ có một CMD.
    8. WORKDIR — Thiết lập thư mục đang làm việc cho các chỉ thị khác như: RUN, CMD, ENTRYPOINT, COPY, ADD,…
    9. ARG — Định nghĩa giá trị biến được dùng trong lúc build image.
    10. ENTRYPOINT — cung cấp lệnh và đối số cho một container thực thi.
    11. EXPOSE — khai báo port lắng nghe của image.
    12. VOLUME — tạo một điểm gắn thư mục để truy cập và lưu trữ data.

 

Một số lệnh sử dụng với Docker bạn cần biết:

  • List image/container:
$ docker image/container ls
  • Delete image/container:
$ docker image/container rm <tên image/container >
  • Delete all image hiện có:
$ docker image rm $(docker images –a –q)
  • List all container hiện có:
$ docker ps –a
  • Stop a container cụ thể:
$ docker stop <tên container>
  • Run container từ image và thay đổi tên container:
$ docker run –name <tên container> <tên image>
  • Stop all container:
$ docker stop $(docker ps –a –q)
  • Delete all container hiện có:
$ docker rm $(docker ps –a –q)
  • Show log a container:
$ docker logs <tên container>
  • Build một image từ container:
$ docker build -t <tên container> .
  • Tạo một container chạy ngầm:
$ docker run -d <tên image>
  • Tải một image trên docker hub:
$ docker pull <tên image>
  • Start một container:
$ docker start <tên container>

Trên đây là những tổng hợp của mình về những khái niệm cơ bản trong Docker và những lệnh cần thiết. Hi vọng sẽ giúp bạn hiểu hơn về Docker, có thể áp dụng cho việc lập trình của mình.

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

More Post

MySQL Procedure là gì?

Procedure trong MySQL là một tập các khai báo sql được lưu trữ trong cơ sở dữ liệu(database) thực...

Dependency Injection và Service Container trong Laravel

Service Container trong Laravel như là trung tâm của một ứng dụng, có mặt mọi nơi trong dự án,...

Laravel Swagger là gì? Hướng dẫn tạo Swagger trong Laravel

Swagger là một framework giúp bạn định nghĩa, mô tả các API trong dự án một cách trực quan, rõ...

2
0
Rất thích suy nghĩ của bạn, hãy bình luận.x