PHẦN MỞ ĐẦU
Ảo hóa là công nghệ cho phép chạy đồng thời nhiều máy ảo (VM) trên cùng một phần cứng vật lý, giúp tối ưu hóa việc sử dụng tài nguyên và giảm thiểu lãng phí Nhiều trung tâm dữ liệu hiện chỉ sử dụng từ 10% đến 30% năng lực xử lý của họ, và ảo hóa đã giúp các tổ chức chia sẻ tài nguyên công nghệ thông tin hiệu quả hơn với chi phí thấp Công nghệ này mang lại sự linh động cho cơ sở hạ tầng CNTT, tự động đáp ứng nhu cầu cần thiết của doanh nghiệp Việc sử dụng ảo hóa cho phép người dùng chạy nhiều hệ điều hành và hệ thống đồng thời trên cùng một máy chủ, mở rộng khả năng lưu trữ và cung cấp tài nguyên hiệu quả Đặc biệt, công nghệ ảo hóa Docker đang phát triển mạnh mẽ và hứa hẹn nhiều tiềm năng trong tương lai Chính vì vậy, chúng tôi đã chọn đề tài “Tìm hiểu về Docker và cài đặt thử nghiệm một hệ điều hành trên Docker” để triển khai.
Đối tượng nghiên cứu và phạm vi nghiên cứu Đối tượng nghiên cứu: Công nghệ ảo hóa Docker.
Phạm vi nghiên cứu: Tìm hiểu về Docker và cài đặt thử nghiệm một hệ điều hành trên Docker.
- Sưu tầm và tổng hợp các nguồn tài liệu, tư liệu liên quan về vấn đề ảo hóa Docker.
- Tìm hiểu, nghiên cứu và cài đặt thử nghiệm hệ điều hành trên Docker.
Ngoài phần mở đầu và kết luận, nội dung luận văn chia làm 2 phần:
Phần 1 – Lý Thuyết về Docker.
Phần 2 – Thực hành trên Docker.
PHẦN NỘI DUNG
LÝ THUYẾT
Docker là nền tảng giúp lập trình viên dễ dàng xây dựng, triển khai và chạy ứng dụng thông qua việc sử dụng containers Ban đầu được phát triển bằng Python, hiện nay Docker đã chuyển sang sử dụng Golang Nền tảng này hoạt động ở tầng hệ điều hành, cho phép tối ưu hóa và tăng tốc độ ảo hóa các dịch vụ và ứng dụng.
Docker bao gồm 4 thành phần chính sau đây:
Docker Image: Nó được xem là những template nằm trong Docker Container Người dùng có thể thao tác trên các template để tạo ra những Docker Container giống nhau.
Docker Image là một tệp hình ảnh đại diện cho một nền tảng, ngôn ngữ hoặc hệ điều hành Những hình ảnh này được chia sẻ công khai trên Docker Hub, cho phép người dùng dễ dàng truy cập, sử dụng và phát triển.
Docker Container là một máy ảo thực thi các lệnh từ Docker Image, chứa đầy đủ các gói cần thiết để khởi động và chạy ứng dụng Các Container chia sẻ tài nguyên hệ thống, giúp giảm thiểu trọng lượng và tăng tốc độ kết nối, tương tác.
Docker Engine là thành phần thiết yếu của Docker, đóng vai trò quan trọng trong việc đóng gói ứng dụng Chức năng chính của Docker Engine bao gồm việc chạy container, quản lý quá trình tạo image, kết nối vào container, tải image từ kho hoặc sử dụng các image đã có sẵn.
Docker Hub là dịch vụ cloud giúp tự động hóa quy trình làm việc liên tục và chia sẻ ứng dụng Nó cho phép người dùng thực hiện các thao tác pull và push với các images một cách dễ dàng.
Hình 1 Docker có 4 thành phần chính
1.1.3 Phân biệt giữa Containers và Virtual Machine
Phong trào container hóa lấy cảm hứng từ Docker mang lại những lợi thế vượt trội so với mô hình ảo hóa truyền thống, nhờ vào việc tối ưu hóa chiến lược và chia sẻ tài nguyên máy tính hiệu quả Nhiều khả năng chưa được khai thác của nhân Linux đã được khám phá, tạo ra cơ hội tự động hóa và tăng tốc mà nhiều người mong đợi Những lợi ích này bao gồm hiệu suất cao trên môi trường kim loại trần, khả năng mở rộng thời gian thực và tính khả dụng cao hơn Việc loại bỏ các phần thừa thãi giúp tăng tốc độ triển khai hàng trăm vùng chứa ứng dụng chỉ trong vài giây, đồng thời giảm thời gian tiếp thị và chi phí Sơ đồ bên trái minh họa khía cạnh ảo hóa, trong khi sơ đồ bên phải thể hiện những đơn giản hóa đạt được từ việc sử dụng containers.
Bảng sau đưa ra so sánh trực tiếp giữa máy ảo và containers:
Virtual Machines (Máy Đại diện cho ảo hóa mức Kích thước lớn (Dung lư Cấp phép chậm
Hiệu suất hạn chế Hoàn toàn cô lập và do đó
Việc lựa chọn giữa máy ảo và Containers phụ thuộc vào nhu cầu cụ thể của người dùng Máy ảo là sự lựa chọn lý tưởng để cách ly tài nguyên hệ thống và toàn bộ môi trường làm việc, đặc biệt khi cần chạy các ứng dụng đòi hỏi toàn bộ tài nguyên và chức năng của hệ điều hành Điều này rất hữu ích khi bạn cần triển khai nhiều ứng dụng trên một server.
Docker khác biệt với các hệ điều hành ảo hóa ở chỗ nó cô lập từng ứng dụng riêng lẻ thay vì toàn bộ hệ thống Một ví dụ điển hình là việc chia nhỏ các dịch vụ web thành các Docker image độc lập và triển khai chúng qua Docker Container Sử dụng Docker Container là lựa chọn tối ưu khi bạn muốn tối đa hóa số lượng ứng dụng chạy trên ít máy chủ nhất có thể.
1.2 Một số thành phần khác của Docker
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
An image file serves as the foundational layer for an operating system, platform, or programming language, such as Ubuntu, Ruby, Rails, or MySQL These images are essential for creating containers, which are lightweight, portable, and executable units that encapsulate software and its dependencies.
Images are read-only files that can be created from multiple other images For example, if you create an image running Ubuntu with Ruby 2.3 and Rails 5 pre-installed, this new image is derived from three different images.
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 hoạt động như một thư mục, lưu trữ mọi thứ cần thiết cho việc chạy ứng dụng Mỗi Docker container được tạo ra từ một Docker image, và người dùng có thể thực hiện các thao tác như chạy, bật, dừng, di chuyển và xóa container.
Máy ảo được tạo ra từ một image và có thêm một lớp writable-file-layer để trang trí Tất cả các thay đổi trong máy ảo, như cài đặt phần mềm hay tạo file mới, sẽ được lưu trữ ở lớp trang trí này.
Các container này chia sẻ tài nguyên hệ thống như RAM, ổ đĩa và mạng, giúp chúng trở nên nhẹ hơn Nhờ vậy, quá trình khởi động, kết nối và tương tác với các container diễn ra nhanh chóng và hiệu quả.
In object-oriented mapping, an image represents a class, while a container serves as an instance of that class From a single class, multiple instances can be created, just as one image can generate several identical containers.
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.
Docker operates on a client-server architecture, where the Docker server, also known as the daemon, is responsible for building, running, and distributing Docker containers The Docker client and server can exist on the same server or on different servers, communicating through a REST API that utilizes UNIX sockets or network interfaces.
THỰC HÀNH
2.1 Cài đặt và sử dụng Docker
Những điều lưu ý khi cài đặt:
Hệ thống yêu cầu (theo yêu cầu từ chủ trang của Docker):
With the Operating system: start up is Windows 10 64-bit.
Cần bật Hyper-V và Containers Windows.
Load fiel install Docker for Windows tại https://www.docker.com/get-started
Sau khi tải về, bạn cần cài đặt Docker bằng cách sử dụng tập tin Docker Desktop Installer.exe Để chạy Docker, hãy đảm bảo rằng tính năng Hyper-V của Windows đã được bật Trong quá trình cài đặt, nếu Hyper-V chưa được kích hoạt, sẽ có một hộp kiểm xuất hiện hỏi bạn có muốn bật Hyper-V hay không; hãy chọn hộp kiểm này để kích hoạt Hyper-V.
Sau khi cài đặt Docker, bạn cần khởi động lại máy tính để chạy ứng dụng Sau khi khởi động, biểu tượng Docker sẽ xuất hiện trên khay hệ thống Để kiểm tra thông tin chi tiết về Docker, bạn có thể sử dụng lệnh cmd.
To verify the version of Docker, thực hiện cmd.
Khi quá trình khởi chạy hoàn thành, chúng ta có một màn hình giới thiệu khi mở Docker Desktop
23 Đã thiết lập xong Docker trên Windows 10.
Một số câu lệnh trong Docker
Quản lí các images/containers
List các images đang có:
List các container đang chạy:
$ cd folder chứa docker file
Chạy thử ubuntu trên Docker
1-Tạo một file có tên là Dockerfile.
2-Nội dung file bên dưới
3-Mở timinal run lệnh $ docker build -t test
4-Sau khi chạy xong mở Docker desktop lên sẽ thấy một images mới tên là test.
6-Cấu hình port 3389 như trong dockerfile.
7-Mở Remote desktop connection chọn phần localhost:3389 nhấn connect.
8-Sau khi connect máy sẽ bắt đăng nhập người dùng:
Như chúng ta đã cấu hình bên Dockerfile.
2.2 Các lệnh cơ bản thường dùng
Các lệnh cơ bản thường dùng bao gồm:
1-Hiển thị danh sách các images:
Docker pull
(Phần tag là options, nếu để trống thì mặc định download bản latest)
Ví dụ: docker pull ubuntu => download ubuntu latest
Dockerpull ubuntu: 14.04 => download ubuntu version 14.04
Docker run – name -v : -p: bash
Ví dụ: docker run -name eva_nginx -p 80:80 -d nginx
Docker run: lệnh chạy của Docker
name: đặt tên cho container ở đây là eva_nginx Name này là duy nhất không thể tạo trùng, nếu không đặt thì docker tự genate
p mở port container ra ngoài IP public
d bật chế độ chạy background
Docker ps -a (liệt kê tất cả các container)
Docker ps (chỉ liệt kê các container đang chạy background)
Docker stop
Docker stop $(docker ps -a -q) (Dừng tất cả các docker đang dùng)
6-Khởi động lại container đã dừng
Docker start
7-Xóa container không còn sử dụng
Docker rm
Docker rm $(docker ps -a -q) (Xóa tất cả các docker)
8-Truy cập vào 1 container đang chạy
Docker exec -it bash
Docker export | gzip > file_export.tar.gz
Zcat file_export.tar.gz | docker Sau khi chạy xong, chạy lệnh docker images để kiểm tra lại trong danh sách list images.
Ngoài ra còn nhiều lệnh khác Sử dụng lệnh docker -h sẽ liệt kê chi tiết.
2.3 File source code cài đặt thử nghiệm hệ điều hành trên Docker https://github.com/an678-mhg/dockerfile/blob/master/Dockerfile? fbclid=IwAR1RabOMF- jkHhmyZQmMH7VZhlQ9Ecx0VPk1184pHQ4jUBnrfMLW3Rn2f9w
2.4 Video demo cài đặt thử nghiệm hệ điều hành trên Docker https://drive.google.com/file/d/1FyFRbWu2Fj6Yp3CfdKFliQmpEe7raAVx/view? fbclid=IwAR0nC4fPRACgElyHywD4Azo9pRnEnVH0sXJmCN4h3z-
PHẦN KẾT LUẬN
Docker, được phát hành dưới dạng mã nguồn mở vào tháng 3 năm 2013, nhanh chóng trở thành một trong 20 dự án hàng đầu trên GitHub vào năm 2015 Năm 2017 đánh dấu sự thay đổi lớn của Docker, với phần mềm ảo hóa này được đánh giá là tương lai của công nghệ ảo hóa, hỗ trợ nhiều hệ điều hành như GNU/Linux, Cloud, Mac OS X và Microsoft Windows Thay vì sử dụng máy ảo độc lập như hypervisors, Docker cung cấp giải pháp ảo hóa bằng cách đóng gói ứng dụng thành các Container riêng lẻ, cho phép chúng chạy chung trên nhân hệ điều hành qua LXC, giúp tiết kiệm tài nguyên và tăng tốc độ Hệ thống Docker bao gồm hai thành phần chính là Docker Engine và Docker Hub, cùng với các đối tượng như Docker images, Docker registries, Docker container, Dockerfile, và Orchestration Quy trình thực thi Docker diễn ra qua ba bước chính: Build → Push → Pull, Run, và quy trình ảo hóa ứng dụng bao gồm việc tạo Dockerfile, build image và chạy container So với các công nghệ ảo hóa khác như Virtual Machine và Vagrant, Docker nổi bật với tốc độ nhanh hơn, nhẹ hơn và dễ dàng chia sẻ hơn.