+7

Tìm hiểu về Docker.

Mục lục

  • Docker là gì?
  • Sự khác biệt giữa DockerHypervisors
  • Sự khác biệt giữa Docker ImageDocker Container
  • Làm thế nào để tạo ra một Docker Image bằng Dockerfile

Docker là gì?

Docker là nền tảng cung cấp cho các công cụ, service để các lập trình viên và người quản trị hệ thống có thể phát triển, thực thi, chạy các ứng dụng với containers. Việc sử dụng các Linux containers để triển khia ứng dụng được gọi là containerization. Việc sử dụng container giúp dễ dàng hơn trong việc triển khai ứng dụng.

Containerization ngày càng được sử dụng phổ biến bởi container :

  • Flexible: Hầu hết những ứng dụng phức tạp đều có thể containerized.
  • Lightweight: container tận dụng và chia sẻ kernel của máy chủ.
  • Interchangeable: Bạn có thể triển khai các bản cập nhật, nâng cấp một cách nhanh chóng.
  • Portable: Bạn có thể tạo ra container ở dưới local, triển khai nó lên trên cloud và chạy nó ở mọi nơi.
  • Scalable: Bạn có thêm, phân phát cả bản sao của container.
  • Stackable: Bạn có thể stack các service nhanh chóng.

Docker bao gồm:

  • Docker Engine: Chứa các tool, engine để có thể đóng gói chương trình và vận hành chúng một cách đơn giản nhất.
  • Docker Hub: Giống như Github, là nơi bạn có thể lưu trữ các chương trình đã được đóng gói (image) của mình và quản lý các image.

Sự khác biệt giữa Docker và Hypervisors.

Với Docker, các container chạy tự nhiên trên Linux và chia sẻ kernel của máy chủ với các container khác. Nó chạy như một tiến trình độc lập, chiếm ít tài nguyên hơn. alt alt

Ngược lại với các Hypervisor khác, chúng là các máy ảo (virtual machine - VM) chạy hoàn toàn trên một hệ điều hành hoàn chỉnh với các truy cập đến tài nguyên máy chủ thông qua một hypervisor. Thực tế, VM cung cập môi trường với nhiều tài nguyên hơn ứng dụng cần.

Sự khác biệt giữa Docker Image và Docker Container.

Docker Image là một gói bao gồm tất cả những thứ cần thiết để chạy một ứng dụng như mã nguồn, thư viện, a runtime, các biến môi trường và các file cấu hình.

Docker Containerinstance thực thi một image - các image sẽ biến thành bộ nhớ và được thực thi (image với trạng thái hay tiến tình người dùng).

Làm thế nào để tạo ra một Docker Image từ Dockerfile.

Dockerfile là một tập tin chưa các câu lệnh để tạo mới một Dokcer Image. Một số lệnh trong file Dockerfile.

  • FROM <base_image>:<phiên_bản>: đây là câu lệnh bắt buộc phải có trong bất kỳ Dockerfile nào. Nó dùng để khai báo base Image mà chúng ta sẽ build mới Image của chúng ta.
  • MAINTAINER <tên_tác_giả>: câu lệnh này dùng để khai báo trên tác giả tạo ra Image, chúng ta có thể khai báo nó hoặc không.
  • RUN <câu_lệnh>: chúng ta sử dụng lệnh này để chạy một command cho việc cài đặt các công cụ cần thiết cho Image của chúng ta.
  • CMD <câu_lệnh>: trong một Dockerfile thì chúng ta chỉ có duy nhất một câu lệnh CMD, câu lệnh này dùng để xác định quyền thực thi của các câu lệnh khi chúng ta tạo mới Image.
  • ADD <src> <dest>: câu lệnh này dùng để copy một tập tin local hoặc remote nào đó (khai báo bằng <src>) vào một vị trí nào đó trên Container (khai báo bằng dest).
  • ENV <tên_biến>: định nghĩa biến môi trường trong Container.
  • ENTRYPOINT <câu_lệnh>: định nghĩa những command mặc định, cái mà sẽ được chạy khi container running.
  • VOLUME <tên_thư_mục>: dùng để truy cập hoặc liên kết một thư mục nào đó trong Container.

Để tạo ra một image từ Dockerfile, chúng ta tạo một thư mục rỗng. Tạo một file tên Dockerfile nội dung như sau:

FROM ubuntu
RUN apt-get update
RUN apt-get install wget -y
CMD curl ifconfig.io

Build image từ Dockerfile đã tạo :

Với Dockerfile đã tạo ở trên, chúng ta có thể tiến hành build một image. Các bạn trỏ đường dẫn đến thư mục lưu Dockerfile nhé. Gõ lệnh

$ sudo docker build -t docker-image:1.0 .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM ubuntu
 ---> 0458a4468cbc
Step 2/4 : RUN apt-get update
 ---> Using cache
 ---> 5a82410cc14f
Step 3/4 : RUN apt-get install wget -y
 ---> Using cache
 ---> 7a5622064a41
Step 4/4 : CMD curl ifconfig.io
 ---> Using cache
 ---> 3ec2d62926bb
Successfully built 3ec2d62926bb
Successfully tagged docker-image:1.0

Sau khi build thành công, thực hiện run image bằng lệnh:

$ docker run --name docker-image  3ec2d62926bb.

Lời kết

Trong phần 1 này cơ bản chúng ta đã hiểu về docker cùng một số khái niệm quan trọng như Dockerfile, Docker Images, Docker Container...Rất mong được sự góp ý từ mọi người


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í