Tìm hiểu về Docker.
Bài đăng này đã không được cập nhật trong 6 năm
Mục lục
- Docker là gì?
- Sự khác biệt giữa Docker và Hypervisors
- Sự khác biệt giữa
Docker Image
vàDocker Container
- Làm thế nào để tạo ra một
Docker Image
bằngDockerfile
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ướilocal
, triển khai nó lên trêncloud
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.
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 Container là instance
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