Hướng dẫn sử dụng Docker cho người mới bắt đầu: Khái niệm cơ bản, Archikiến trúc, container

⚡ Tóm tắt thông minh

Docker là một nền tảng container hóa dùng để đóng gói các ứng dụng và các thành phần phụ thuộc của chúng vào các container nhẹ và dễ di chuyển. Bài tổng quan này giải thích về kiến ​​trúc Docker, cài đặt và... UbuntuCác lệnh thiết yếu và sự khác biệt giữa container và máy ảo truyền thống để tăng tốc độ phân phối phần mềm.

  • 🐳 Container hóa: Docker ảo hóa ở cấp độ hệ điều hành, do đó các container chia sẻ nhân hệ điều hành của máy chủ và sử dụng ít tài nguyên hơn so với máy ảo.
  • 🧱 Archikiến trúc: Công cụ Docker (dockerd), các image, registry và container tạo nên kiến ​​trúc máy chủ-máy khách đằng sau mọi quy trình làm việc của Docker.
  • 📦 Hình ảnh và thùng chứa: Ảnh (image) là một mẫu chỉ đọc, trong khi container là một bản sao đang chạy, và một ảnh có thể khởi tạo nhiều container.
  • 🗄️ Đăng ký: Docker Hub lưu trữ các image công khai và riêng tư, cung cấp cho bạn hàng triệu image sẵn sàng sử dụng để tải xuống và chạy.
  • ⚙️ Cài đặt: On Ubuntu Bạn thêm kho lưu trữ APT của Docker và khóa GPG, sau đó cài đặt gói docker-ce bằng apt-get.
  • ⌨️ Các lệnh cốt lõi: Quản lý container bằng các lệnh docker pull, run, start, stop, ps, stats và images từ dòng lệnh.

Hướng dẫn Docker dành cho người mới bắt đầu, bao gồm kiến ​​trúc, cài đặt và... Ubuntuvà các lệnh container cơ bản

Docker là một trong những nền tảng container hóa phổ biến nhất được sử dụng trong công nghệ hiện đại. DevOps và quy trình làm việc trên đám mây. Hướng dẫn Docker dành cho người mới bắt đầu này giải thích Docker là gì, kiến ​​trúc Docker hoạt động như thế nào, cách cài đặt Docker trên... Ubuntuvà các lệnh cơ bản được sử dụng để quản lý hình ảnh và vùng chứa.

Docker là gì?

phu bến tàu Docker là một nền tảng phát triển phần mềm ảo hóa cho phép nhiều hệ điều hành chạy trên cùng một máy chủ. Nó giúp bạn tách biệt cơ sở hạ tầng khỏi ứng dụng để có thể phân phối phần mềm nhanh chóng. Không giống như các hypervisor được sử dụng để tạo máy ảo (VM), Docker thực hiện ảo hóa ở cấp độ hệ thống bằng cách sử dụng các đơn vị được gọi là container Docker.

Các container Docker chạy trên hệ điều hành của máy chủ, như hình ảnh bên dưới. Điều này giúp cải thiện cả hiệu quả và bảo mật. Bạn cũng có thể chạy nhiều container hơn máy ảo trên cùng một cơ sở hạ tầng, vì container sử dụng ít tài nguyên hơn.

Ảo hóa trong Docker vs Hypervisor
Ảo hóa trong Docker vs Hypervisor

Không giống như máy ảo (VM), có thể giao tiếp trực tiếp với phần cứng máy chủ (ví dụ: bộ điều hợp Ethernet tạo ra nhiều bộ điều hợp ảo hơn), các container Docker chạy trong một môi trường biệt lập trên hệ điều hành máy chủ. Ngay cả khi máy chủ của bạn chạy... Windows, bạn có thể chạy Linux hình ảnh bên trong các vùng chứa với sự trợ giúp của Hyper-V, chức năng này tự động tạo một máy ảo nhỏ để ảo hóa ảnh gốc.

Giờ bạn đã biết Docker là gì, hãy cùng xem xét những lý do chính khiến các nhóm lựa chọn nó.

Tại sao nên sử dụng Docker?

Dưới đây là những lý do chính để sử dụng Docker:

  • Docker là phần mềm được sử dụng để ảo hóa, cho phép tạo nhiều máy ảo. các hệ điều hành để chạy trên cùng một máy chủ.
  • Docker là một ứng dụng client-server, có nghĩa là các client giao tiếp với máy chủ.
  • Ảnh Docker đóng vai trò như "mã nguồn" cho các container; bạn sử dụng chúng để xây dựng.
  • Docker hỗ trợ hai loại registry: công cộng và riêng tư.
  • Container là đơn vị tổ chức của Docker. Nói một cách đơn giản, image là một mẫu và container là một bản sao của mẫu đó, vì vậy bạn có thể chạy nhiều container từ cùng một image.

Những lợi ích này đến từ cách thức thiết kế của Docker. Phần tiếp theo sẽ phân tích kiến ​​trúc Docker và các thành phần cốt lõi của nó.

phu bến tàu Archikiến trúc

Bây giờ, trong hướng dẫn về container Docker này, chúng ta hãy cùng xem xét các thành phần chính của kiến ​​trúc Docker.

phu bến tàu ArchiCác thành phần kiến ​​trúc: công cụ, hình ảnh, kho lưu trữ và vùng chứa.

phu bến tàu Archikiến trúc

Công cụ Docker

Docker là một ứng dụng máy khách-máy chủ, có nghĩa là chúng ta có các máy khách chuyển tiếp yêu cầu đến máy chủ. Trình nền Docker, được gọi là dockerd, là công cụ Docker đại diện cho máy chủ. Trình nền và các máy khách có thể chạy trên cùng một máy chủ hoặc máy chủ từ xa, và chúng giao tiếp thông qua một tệp nhị phân máy khách dòng lệnh và một tệp đầy đủ. API RESTful Nó tương tác với dockerd.

Hình ảnh Docker

Ảnh Docker là "mã nguồn" cho các container của chúng ta; chúng ta sử dụng chúng để xây dựng container. Ảnh có thể đã được cài đặt sẵn phần mềm, giúp tăng tốc quá trình triển khai. Chúng có tính di động cao, và bạn có thể sử dụng các ảnh hiện có hoặc tự xây dựng ảnh của riêng mình.

Đăng ký Docker

Docker lưu trữ các image mà chúng ta xây dựng trong các registry. Có các registry công cộng và riêng tư. Docker có một registry công cộng gọi là Trung tâm DockerNơi bạn cũng có thể lưu trữ hình ảnh một cách riêng tư. Docker Hub có hàng triệu hình ảnh mà bạn có thể bắt đầu sử dụng ngay lập tức.

Docker Container

Container là đơn vị tổ chức của Docker và là một trong những khái niệm cơ bản của nó. Khi chúng ta xây dựng và chạy một image, chúng ta đang chạy nó bên trong một container. Sự tương đồng với container được sử dụng vì tính di động của phần mềm chạy bên trong nó: bạn có thể di chuyển, "vận chuyển", sửa đổi, quản lý, tạo hoặc xóa nó, giống như các tàu chở hàng xử lý các container thực tế.

Nói một cách đơn giản, hình ảnh là một mẫu và vùng chứa là bản sao của mẫu đó. Bạn có thể có nhiều vùng chứa (bản sao) của cùng một hình ảnh.

Sự tương tác giữa các thành phần khác nhau này cho thấy công nghệ container Docker hoạt động cùng nhau như thế nào. Các lệnh như `docker pull` và `docker run`, mà chúng ta sẽ đề cập sau, cho phép bạn quản lý quy trình làm việc này.

Với kiến ​​trúc tổng thể đó, chúng ta hãy cài đặt Docker để bạn có thể tự mình trải nghiệm các thành phần này.

Cách cài đặt Docker trên Linux/Ubuntu

Dưới đây là quy trình cài đặt Docker từng bước trên Linux.Ubuntu:

Bước 1) Để cài đặt Docker, bạn cần các gói DEB của nhóm Docker. Trước tiên, cần một số điều kiện tiên quyết. Ubuntu Cần cài đặt các gói phần mềm này. Sử dụng lệnh bên dưới để cài đặt chúng.

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*ký hiệu “\” không cần thiết, nó được sử dụng cho dòng mới, nếu muốn bạn có thể viết lệnh mà không cần sử dụng “\” chỉ trên một dòng.

Bước 2) Thêm khóa GPG chính thức của Docker kèm dấu vân tay. Sử dụng lệnh Docker bên dưới để nhập khóa GPG.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Bước 3) Tiếp theo, hãy thêm kho lưu trữ Docker APT bằng lệnh dưới đây.

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Bạn có thể được yêu cầu xác nhận rằng bạn muốn thêm kho lưu trữ và tự động thêm khóa GPG vào máy chủ của mình. Lệnh lsb_release sẽ điền thông tin vào... Ubuntu phiên bản phân phối của máy chủ của bạn.

Bước 4) Sau khi thêm khóa GPG, hãy cập nhật nguồn APT bằng lệnh Docker bên dưới.

$ sudo apt-get update

Giờ bạn có thể cài đặt gói Docker.

Bước 5) Sau khi cập nhật nguồn APT, hãy bắt đầu cài đặt các gói Docker trên máy tính. Ubuntu Sử dụng lệnh Docker bên dưới.

$ sudo apt-get install docker-ce

Lệnh trên cài đặt Docker và các gói cần thiết khác. Trước phiên bản Docker 1.8.0, tên gói là lxc-docker, và giữa phiên bản Docker 1.8 và 1.13, tên gói là docker-engine.

LƯU Ý: Docker cho Windows đòi hỏi Windows 10 Pro hoặc Enterprise phiên bản 14393, hoặc Windows Cần chạy Server 2016 RTM.

Cách sử dụng Docker bằng các lệnh Docker cơ bản

Dưới đây là cách sử dụng Docker với một vài lệnh Docker cơ bản.

Như đã đề cập trước đó, lệnh cơ bản nhất bạn nên chạy sau khi cài đặt Docker là `docker info`.

$ sudo docker info

Bạn sẽ nhận được kết quả tương tự như sau.

Sử dụng Docker với các lệnh Docker cơ bản, hiển thị thông tin đầu ra của lệnh `docker info`.

Như ví dụ Docker ở trên cho thấy, chúng ta có thể thấy thông tin về các container Docker: có bao nhiêu container đang chạy, tạm dừng hoặc đã dừng, và có bao nhiêu image đã được tải xuống. Bây giờ, hãy tải image đầu tiên của chúng ta.

$ sudo docker pull alpine

Với lệnh này, chúng ta yêu cầu Docker tải xuống ảnh alpine, lấy từ kho lưu trữ công cộng ở phiên bản mới nhất, phiên bản được thiết lập mặc định.

*alpine là hình ảnh Docker tối thiểu dựa trên Alpine Linux với chỉ mục gói hoàn chỉnh và kích thước chỉ 5 MB.

Nếu muốn chạy ảnh dưới dạng container, ta sử dụng lệnh sau.

$ sudo docker run -i -t alpine /bin/bash

Chạy lệnh này sẽ đưa chúng ta trực tiếp đến terminal Alpine. Cờ -i giữ cho STDIN luôn mở từ container ngay cả khi bạn không kết nối với nó; đầu vào chuẩn liên tục này là một nửa những gì bạn cần cho một shell tương tác. Cờ -t là nửa còn lại và hướng dẫn Docker gán một pseudo-tty cho container. Cả hai cùng nhau cung cấp cho chúng ta một shell tương tác trong container mới. Chúng ta thoát khỏi container bằng một lệnh exit đơn giản.

Bây giờ, trong hướng dẫn cơ bản về Docker này, chúng ta có thể thử chạy một lệnh Ubuntu hình ảnh.

$ sudo docker run -it ubuntu /bin/bash

Lưu ý rằng Docker kiểm tra xem ảnh container có sẵn trên máy tính cục bộ hay không, và nếu không có, ảnh sẽ được tự động tải xuống từ thư viện ảnh. Một lần nữa, chúng ta có một giao diện dòng lệnh tương tác đang chạy. Chúng ta cũng có thể đặt tên cho các container khi chạy chúng.

$ sudo docker run –-name our_container -it ubuntu /bin/bash

Sau đó chúng ta thoát ra. Chúng ta cũng có thể chạy một container đã tạo trước đó mà không cần shell tương tác.

$ sudo docker start container_name

Và chúng ta dừng container bằng cách gõ lệnh `docker stop container_name`.

$ sudo docker stop container_name

Nếu muốn xem tất cả các container đang chạy, ta chỉ cần chạy lệnh sau.

$ docker ps

Đối với tất cả các container, chúng ta thêm "-a" vào cuối cùng một lệnh, ví dụ như `docker ps -a`. Lệnh này hiển thị ID của container, hình ảnh mà nó sử dụng, thời gian tạo, trạng thái hoạt động, các cổng được mở và một tên được tạo ngẫu nhiên để dễ quản lý hơn.

Khi chạy container, chúng ta thường muốn biết chúng đang sử dụng bao nhiêu tài nguyên. Để làm được điều đó, chúng ta có thể sử dụng lệnh sau.

$ docker stats

Bạn cũng có thể xem những hình ảnh nào bạn đã tải xuống cục bộ, cùng với thông tin về chúng.

$ sudo docker images

Lệnh trong ví dụ Docker ở trên hiển thị từng ảnh Docker với một thẻ (tag) thể hiện phiên bản ảnh, ID ảnh riêng biệt, ngày tạo và kích thước ảnh.

Để hiểu tại sao container lại là một bước cải tiến đáng kể, việc xem xét quá trình phát triển của ảo hóa sẽ rất hữu ích.

Ảo hóa là gì?

Trước đây, việc triển khai một dịch vụ rất chậm và khó khăn. Các nhà phát triển sẽ viết mã, sau đó nhóm vận hành sẽ triển khai nó trên các máy chủ vật lý, nơi họ phải theo dõi các phiên bản thư viện, bản vá lỗi và trình biên dịch ngôn ngữ để đảm bảo mã hoạt động. Nếu có lỗi, quy trình sẽ bắt đầu lại từ đầu: các nhà phát triển sẽ sửa lỗi, và nhóm vận hành sẽ triển khai lại.

Mọi thứ đã được cải thiện với sự ra đời của các hypervisor. Hypervisor chạy nhiều hệ điều hành khác nhau. máy ảohoặc máy ảo (VM) trên cùng một máy chủ, có thể đang chạy hoặc đã tắt. Máy ảo giúp giảm đáng kể thời gian chờ đợi để triển khai mã và sửa lỗi, nhưng yếu tố thay đổi cuộc chơi thực sự là các container Docker.

Sự phổ biến của Docker cũng được thúc đẩy bởi các công cụ điều phối giúp quản lý container ở quy mô lớn, chẳng hạn như... KubernetesTrước khi tiếp tục, đây là bảng tóm tắt nhanh các lệnh Docker quan trọng nhất.

Các lệnh Docker quan trọng

Dưới đây là các lệnh Docker quan trọng:

Lệnh Mô tả Chi tiết
thông tin docker Lệnh thông tin
kéo docker Tải xuống một hình ảnh
docker run -i -t image_name /bin/bash Chạy hình ảnh dưới dạng vùng chứa
docker bắt đầu our_container Bắt đầu vùng chứa
docker dừng container_name Dừng container
docker ps Danh sách tất cả các container đang chạy
số liệu thống kê docker Thông tin vùng chứa
ảnh dok Danh sách hình ảnh đã tải xuống
Dọn dẹp Docker Tiêu diệt tất cả các container đang chạy.

Ngoài ra, đọc những Câu hỏi và câu trả lời phỏng vấn xin việc Docker Dành cho cả người mới ra trường và những chuyên gia có kinh nghiệm.

Câu Hỏi Thường Gặp

Container Docker chia sẻ nhân hệ điều hành của máy chủ và chỉ cô lập ứng dụng, do đó nó nhẹ và khởi động trong vài giây. Máy ảo tích hợp toàn bộ hệ điều hành khách, khiến nó lớn hơn, khởi động chậm hơn và tốn nhiều tài nguyên hơn.

Dockerfile là một kịch bản văn bản thuần túy chứa các hướng dẫn như FROM, RUN, COPY và CMD. Docker đọc các hướng dẫn này để tự động xây dựng một ảnh Docker. Mỗi dòng lệnh bổ sung một lớp, cho phép bạn tái tạo cùng một môi trường trên bất kỳ máy nào.

Docker Compose định nghĩa và chạy các ứng dụng đa container bằng một tệp YAML duy nhất. Bạn chỉ cần mô tả từng dịch vụ, mạng và volume một lần, sau đó khởi động mọi thứ bằng lệnh `docker compose up`. Nó lý tưởng cho việc phát triển và kiểm thử cục bộ các dịch vụ được kết nối.

Docker xây dựng và chạy các container riêng lẻ, trong khi đó... Kubernetes Docker điều phối nhiều container trên một cụm. Kubernetes bổ sung khả năng tự động mở rộng quy mô, tự phục hồi và cân bằng tải. Trên thực tế, Docker đóng gói ứng dụng và Kubernetes quản lý nó trong môi trường sản xuất.

Docker Engine là phần mềm mã nguồn mở miễn phí theo giấy phép Apache 2.0. Docker Desktop miễn phí cho mục đích sử dụng cá nhân, giáo dục và doanh nghiệp nhỏ, nhưng các công ty lớn hơn cần đăng ký trả phí. Docker Hub cung cấp cả gói lưu trữ hình ảnh miễn phí và trả phí.

Docker chạy nguyên bản trên Linux và được hỗ trợ trên... Windows và macOS thông qua Docker Desktop. Trên Windows Trên Mac và Docker, chúng sử dụng một máy ảo nhẹ để chạy nhân Linux mà các container yêu cầu. Hầu hết các ảnh container đều dựa trên Linux.

Trợ lý AI tạo ra các tệp Dockerfile, tệp docker-compose và các lệnh CLI từ các lời nhắc bằng ngôn ngữ thông thường. Chúng cũng đọc nhật ký xây dựng và lỗi vùng chứa, giải thích nguyên nhân và đề xuất cách khắc phục. Luôn luôn xem lại cấu hình được tạo ra để đảm bảo các thẻ hình ảnh, đường dẫn và bảo mật chính xác trước khi chạy.

Vâng. Trợ lý GitHub ChatGPT có thể soạn thảo các tệp Dockerfile và Compose từ một đoạn bình luận hoặc mô tả ngắn. Chúng giúp tăng tốc quá trình tạo mã lặp lại, nhưng bạn nên kiểm tra lại ảnh nền, phiên bản và các thực tiễn tốt nhất, vì các đoạn mã được tạo ra có thể sử dụng các giá trị mặc định đã lỗi thời.

Tóm tắt bài viết này với: