Header ads

Header ads
» » » Thế nào là Docker? Giới thiệu Docker Image, Docker Container và Dockerfile

Docker là máy ảo siêu gọn nhẹ sử dụng tài nguyên chia sẻ với OS. Khái niệm Docker trong công nghệ không còn là mới. Nếu bạn chưa biết Docker là gì thì bạn đang lỗi thời đấy?!

Docker là gì?

Docker là máy ảo siêu gọn nhẹ sử dụng tài nguyên chia sẻ với hệ điều hành (OS).
Cách giải thích nhanh nhất và dễ hiểu nhất cho Docker đó là Docker gần giống với các máy ảo như VirtualBox hay VMware, nhưng gọn nhẹ hơn nhiều.
Lợi ích của dùng Docker:
  • Khởi tạo môi trường phát triển phần mềm cực dễ dàng
  • Đồng bộ giữa các môi trường: dev, staging, production
  • Chi phí overhead nhỏ khi dùng Docker so với việc cài đặt trực tiếp trên máy
  • Docker có trên cả Linux và Windows
Trình tự các bước thường làm để dựng môi trường phát triển bằng Docker:
  1. Tìm docker image có sẵn trên cộng đồng (docker hub) hoặc từ viết Dockerfile. Các giải thích về docker image và Dockerfile sẽ có trong các mục tới.
  2. Kéo docker image về máy hoặc build docker image từ Dockerfile.
  3. Start docker container từ docker image
Vậy là xong, ta đã set up xong môi trường cho phát triển phần mềm với Docker cực kỳ đơn giản, dễ dàng và nhanh chóng.

Docker image

Docker image là một ảnh của một môi trường phát triển (có thể hiểu là snapshot). Nói ngắn gọn là chúng ta có thể gói các cài đặt môi trường (OS, package, phần mềm của chúng ta đã viết, …) lại thành 1 cục duy nhất, đó chính là docker image. Khi đã có docker image, ta có thể khởi tạo các docker container từ docker image.
Nếu liên tưởng đến OOP, thì ta có thể xem docker image là class, còn docker container là object / instance của class đó!
Vì vậy nếu ta có 1 docker image trên máy, ta có thể tạo một hoặc nhiều container có môi trường bên trong chúng giống hệt nhau.
Ok, vậy làm sao để tạo ra 1 docker image? Câu trả lời đó chính là viết Dockerfile. Ta build Dockerfile để tạo ra docker image (docker image thường có dung lượng nhỏ từ vài MB đến lớn vài GB).

Dockerfile

Dockerfile là file chứa các đặc tả về môi trường thực thi phần mềm. Dễ hiểu nó chỉ là file text thôi, và có các câu lệnh cài đặt quen thuộc. Dĩ nhiên cũng sẽ có 1 số câu lệnh hỗ trợ bởi docker.
Hãy cùng xem 1 Dockerfile đơn giản nào:
Dockerfile
FROM python:alpine3.7

RUN apk add git \
            wget \
            nano

COPY ./main.py /home

CMD ["python" "/home/main.py"]
  • FROM: môi trường của mình sẽ được dựng trên môi trường đặc tả sau lệnh FROM, ở đây mình dùng môi trường python 3.7, hệ điều hành alpine 3.7 (link docker image ở đây). Có rất nhiều môi trường bạn có thể bắt đầu như ubuntucentos, …
  • python:alpine3.7: tên của 1 docker image có cấu trúc như sau: tên_image:version. Cho cùng 1 image python, ta có thể có nhiều phiên bản khác nhau.
  • Các câu lệnh tiếp theo trong file lần lượt mô tả các package sẽ được cài đặt vào môi trường (hệ điều hành alpine, ta phải dùng lệnh "apk" thay vì "apt" như trên Ubuntu), copy source code file main.py từ máy thật vào trong image có đường dẫn /home. Cuối cùng là câu lệnh thực thi khi container được dựng lệnh / khởi động.

Docker container

Docker container là máy ảo chứa môi trường phần mềm.
Ví dụ, 1 container có thể chứa môi trường:
  • OS: Ubuntu 16.04
  • Đã cài sẵn 1 số package như: git, curl, wget, nano, … (hoặc package nào bạn mong muốn tùy nhu cầu mà bạn chọn image hoặc viết Dockerfile tương ứng)
  • Đã cài web app bạn viết
  • Web app đang chạy ở port 8080 trên môi trường ảo đó
Vì môi trường ảo trong container là cô lập, nên có 2 thành phần sau bạn thường mapping môi trường ảo với máy thật để dễ access và kiểm soát tài nguyên:
  • cổng kết nối: port. Ví dụ web bạn bên trong container chạy ở port 8080, nhưng bạn mong muốn có thể access web của bạn tại port 9090 trên máy thật chẳng hạn. Nếu bằng cách nào đó bạn quên mapping port lúc start container lên thì bạn sẽ không access được web app đó.
  • đường dẫn thư mục: volume. Quá trình container chạy có thể sản sinh ra 1 số file (ví dụ: file log chương trình), nếu không "mount" volume giữa thư mục máy thật và đường dẫn thư mục bên trong container (nơi sẽ chứa file sẽ được sản sinh) thì các file được sinh ra trong quá trình chạy ứng dụng của bạn sẽ nằm bên trong container mà bạn không thấy / xem được trên máy thật. Sau khi mount volume đường dẫn thành công thì các file sẽ được ghi ra đường dẫn máy thật bạn đã đặc tả.
Khóa đào tạo Power BI phân tích báo cáo để bán hàng thành công
KHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆP

Khóa học Lập trình Visual Foxpro 9 - Dành cho nhà quản lý và kế toán

Khóa học hướng dẫn về Moodle chuyên nghiệp và hay
Xây dựng hệ thống đào tạo trực tuyến chuyên nghiệp tốt nhất hiện nay.



Khóa học AutoIt dành cho dân IT và Marketing chuyên nghiệp

Khóa học hướng dẫn sử dụng Powerpoint từ đơn giản đến phức tạp HIỆU QUẢ
Khóa học Thiết kế, quản lý dữ liệu dự án chuyên nghiệp cho doanh nghiệp bằng Bizagi
 Khoa hoc hay
Khóa học Phân tích dữ liệu sử dụng Power Query trong Excel


Khóa học Phân tích dữ liệu sử dụng TableAU - Chìa khóa thành công!
Nhấn vào đây để bắt đầu khóa học

Khóa học “Thiết kế bài giảng điện tử”, Video, hoạt hình 
kiếm tiền Youtube bằng phần mềm Camtasia Studio
Khóa học HƯỚNG DẪN THIẾT KẾ VIDEO CLIP CHO DÂN MARKETING CHUYÊN NGHIỆP
 Xây dựng website​​​​
HƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVA
Hãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍
 Khoa hoc hay
MICROSOFT ACCESS



GOOGLE SPREADSHEETS phê không tưởng
 Khoa hoc hay
Khóa hoc lập trình bằng Python tại đây

Hacker mũ trắng




Hãy tham gia khóa học để biết mọi thứ

Để tham gia tất cả các bài học, Bạn nhấn vào đây 
Khóa học sử dụng Adobe Presenter-Tạo bài giảng điện tử
 Khoa hoc hay
Design Website

Khóa học sử dụng Edmodo để dạy và học hiện đại để thành công



Cập nhật công nghệ từ Youtube tại link: congnghe.hocviendaotao.com
Tham gia nhóm Facebook
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn