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:
- 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.
- Kéo docker image về máy hoặc build docker image từ Dockerfile.
- 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ư ubuntu, centos, …
- 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
Khóa học Phân tích dữ liệu sử dụng Power Query trong Excel
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
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!😲👍
GOOGLE SPREADSHEETS phê không tưởng
Khóa học sử dụng Adobe Presenter-Tạo bài giảng điện tử
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
























