Home » TechNote » Giới thiệu Docker

Giới thiệu Docker

what_is_docker

Gần đây Docker đang được thảo luận và gây được nhiều chú ý trong cộng đồng công nghệ trên thế giới, với nhiều hứa hẹn trong tương lai. Các hãng công nghệ lớn như Google, Amazon, Microsoft, IBM … đã bắt đầu hỗ trợ Docker trên nền tảng của họ.

Vậy Docker là gì, có gì thú vị ? Bài viết này ghi lại ngắn những hiểu biết của người viết trong quá trình tìm hiểu về Docker, hi vọng sẽ giúp người đọc có một cái nhìn tổng quan về Docker. Cuối cùng sử dụng Docker để đóng gói và chạy một ứng dụng “Hello world !” Scala trên Play framework.

1. Docker là gì

. Định nghĩa

Docker là một nền tảng mở dành cho các lập trình viên, quản trị hệ thống dùng để xây dựng, vận chuyển và chạy các ứng dụng phân tán. Ban đầu viết bằng Python, hiện tại đã chuyển sang Go-lang.

.Các thành phần chính

– Docker Engine : là thành phần chính của Docker, như một công cụ để đóng gói ứng dụng
– Docker Hub : là dịch vụ cloud để chia sẻ ứng dụng và tự động hóa chuỗi các công việc liên tục, có thể thao tác pull/push với các images

. Một số khái niệm

Docker images : là một “read-only template”. Chẳng hạn, một image chứa hệ điều hành Ubuntu đã cài đặt sẵn Apache và ứng dụng web

Docker registries : Là kho chứa images. Người dùng có thể tạo ra các images của mình và tải lên đây hoặc tải về các images được chia sẻ

Docker container : hoạt động giống như một thư mục (directory), chứa tất cả những thứ cần thiết để một ứng dụng có thể chạy được. Mỗi một docker container được tạo ra từ một docker image. Các thao tác với một container : chạy, bật, dừng, di chuyển, và xóa

Dockerfile : là một file chứa tập hợp các lệnh để Docker có thể đọc và thực hiện để đóng gói một image theo yêu cầu người dùng

Orchestration : là các công cụ, dịch vụ dùng để điều phối và quản lý nhiều containers sao cho chúng làm việc hiệu quả nhất

2. So sánh Docker với Virtual machine

Smiley face
Điểm khác biệt chính là các containers sử dụng chung kernel với Host OS nên các thao tác bật, tắt rất nhẹ nhàng, nhanh chóng.

. Ưu điểm : nhanh, nhẹ, có thể chia sẻ dễ dàng qua DockerHub
. Nhược điểm : mới, cập nhật thay đổi thường xuyên

3. Sử dụng Docker để đúng gói và chạy ứng dụng “Hello World” dùng Scala trên Play framework

. Cài đặt Docker daemon

Việc cài đặt khá đơn giản, tùy theo OS sẽ có cách cài đặt khác nhau, tham khảo thêm tại đây

Cài trên Ubuntu 14.04 :

. Viết Dockerfile

Viết Dockerfile để đóng gói 1 image trong đó đã cài đặt Play framework, ứng dụng “Hello world” Scala và môi trường.

. Đóng gói image từ Dockerfile ở trên, chuyển tới thư mục chứa Dockerfile file và chạy lệnh

. Bật Docker Container

Truy cập http://localhost:9000, điền thông tin và submit form :

Smiley face
. Push image lên DockerHub

. Từ một EC2 chạy ubuntu, chạy lệnh sau để Docker pull longlx/play-hello image từ DockerHub và bật conatianer lên

Truy cập http://ec2-public-ip:9000, điền thông tin và submit form :

Smiley face
4. “Use Case” cho môi trường phát triển

Có thể sử dụng docker trong môi trường phát triển phần mềm như mô hình dưới :

. Bước 1 : Lập trình viên sử dụng Docker trên máy local của mình, phát triển và đóng gói thành docker image, đẩy lên DockerHub

. Bước 2 : SQA có thể tải về image trên môi trường test, bật container và thực hiện việc test các tính năng

. Bước 3 : Nếu test thành công, có thể pull image và bật container trên môi trường production. Nếu việc test không thành công, SQA thông báo lại để lập trình viên kiểm tra lại (quay lại Bước 1)

Bài viết ghi lại những hiểu biết của người viết thu nhận được trong quá trình tìm hiểu và sử dụng Docker còn khá cơ bản. Rất mong nhận được góp ý của người đọc.

Tagged width: