Docker Là Gì? - KungFu Tech
Có thể bạn quan tâm
- Trang chủ
- Khóa học docker
- Docker là gì?
0 phút đọc
Docker là một nền tảng mã nguồn mở giúp các nhà phát triển xây dựng, triển khai, chạy, cập nhật và quản lý các ứng dụng container hóa. Docker cho phép đóng gói ứng dụng và tất cả các phụ thuộc của nó vào một đơn vị tiêu chuẩn gọi là container, giúp ứng dụng có thể chạy một cách nhất quán trên nhiều môi trường khác nhau.
Lịch sử và sự phát triển của Docker
Docker được ra mắt vào năm 2013 bởi công ty Docker, Inc. Ban đầu, Docker được phát triển để giải quyết vấn đề "chạy trên máy của tôi" mà nhiều nhà phát triển gặp phải khi ứng dụng hoạt động trên máy phát triển nhưng không hoạt động trên máy chủ sản xuất. Docker đã nhanh chóng trở thành một công cụ phổ biến trong cộng đồng phát triển phần mềm và DevOps nhờ khả năng đơn giản hóa quá trình phát triển, kiểm thử và triển khai ứng dụng.
Kiến trúc của Docker
Docker sử dụng mô hình kiến trúc client-server, bao gồm các thành phần chính sau:
-
Docker Client: Docker client là giao diện dòng lệnh (CLI) cho phép người dùng tương tác với Docker daemon. Người dùng có thể sử dụng Docker client để gửi các lệnh như docker build, docker pull, docker run đến Docker daemon.
-
Docker Daemon: Docker daemon chạy trên hệ điều hành máy chủ và chịu trách nhiệm quản lý các container Docker. Docker daemon nhận các lệnh từ Docker client và thực hiện các tác vụ như xây dựng, chạy và phân phối các container.
-
Docker Registry: Docker registry là nơi lưu trữ các Docker image. Docker Hub là một registry công cộng phổ biến, nhưng người dùng cũng có thể thiết lập registry riêng của mình. Docker client có thể kéo (pull) các image từ registry và đẩy (push) các image lên registry.
-
Docker Objects: Các đối tượng Docker bao gồm Docker images, containers, networks và volumes. Docker images là các mẫu chỉ đọc dùng để tạo container. Docker containers là các instance đang chạy của Docker images. Docker networks cho phép các container giao tiếp với nhau. Docker volumes cung cấp khả năng lưu trữ dữ liệu bền vững cho các container.
Docker Images và Docker Containers
- Docker Images: Docker image là một mẫu chỉ đọc chứa tất cả các thành phần cần thiết để chạy một ứng dụng, bao gồm mã nguồn, runtime, thư viện, và các công cụ hệ thống. Docker image được xây dựng từ một file cấu hình gọi là Dockerfile. Dockerfile chứa các lệnh để xây dựng image, chẳng hạn như cài đặt các gói phần mềm và sao chép mã nguồn vào image.
- Docker Containers: Docker container là một instance đang chạy của Docker image. Container cung cấp một môi trường cách ly để chạy ứng dụng, giúp đảm bảo rằng ứng dụng sẽ hoạt động nhất quán trên nhiều môi trường khác nhau. Container chia sẻ kernel của hệ điều hành chủ, nhưng có hệ thống file, mạng và không gian tiến trình riêng.
Các lệnh Docker cơ bản
Dưới đây là một số lệnh Docker cơ bản mà bạn sẽ sử dụng thường xuyên khi làm việc với Docker:
-
docker --version: Hiển thị phiên bản Docker hiện tại.
bash Copy docker --version -
docker pull: Kéo một Docker image từ Docker Hub.
bash Copy docker pull <image_name> -
docker run: Tạo và chạy một container từ một Docker image.
bash Copy docker run <image_name> -
docker ps: Liệt kê các container đang chạy.
bash Copy docker ps -
docker ps -a: Liệt kê tất cả các container, bao gồm cả các container đã dừng.
bash Copy docker ps -a -
docker stop: Dừng một container đang chạy.
bash Copy docker stop <container_id> -
docker start: Khởi động lại một container đã dừng.
bash Copy docker start <container_id> -
docker rm: Xóa một container đã dừng.
bash Copy docker rm <container_id> -
docker rmi: Xóa một Docker image.
bash Copy docker rmi <image_name>
Ví dụ: Tạo và chạy một ứng dụng web đơn giản với Docker
Trong ví dụ này, chúng ta sẽ tạo và chạy một ứng dụng web đơn giản sử dụng Docker.
-
Tạo Dockerfile
Tạo một file có tên là Dockerfile với nội dung sau:
Dockerfile Copy # Sử dụng image chính thức của Node.js làm base image FROM node:14 # Tạo thư mục làm việc trong container WORKDIR /app # Sao chép package.json và package-lock.json vào thư mục làm việc COPY package*.json ./ # Cài đặt các phụ thuộc của ứng dụng RUN npm install # Sao chép mã nguồn ứng dụng vào thư mục làm việc COPY . . # Mở cổng 8080 để truy cập ứng dụng EXPOSE 8080 # Chạy ứng dụng khi container khởi động CMD ["node", "app.js"] -
Tạo file package.json
Tạo một file có tên là package.json với nội dung sau:
json Copy { "name": "docker-example", "version": "1.0.0", "description": "A simple web application", "main": "app.js", "scripts": { "start": "node app.js" }, "dependencies": { "express": "^4.17.1" } } -
Tạo file app.js
Tạo một file có tên là app.js với nội dung sau:
javascript Copy const express = require('express'); const app = express(); const port = 8080; app.get('/', (req, res) => { res.send('Hello, Docker!'); }); app.listen(port, () => { console.log(`App running at http://localhost:${port}`); }); -
Xây dựng Docker image
Sử dụng lệnh docker build để xây dựng Docker image từ Dockerfile:
bash Copy docker build -t docker-example . -
Chạy Docker container
Sử dụng lệnh docker run để tạo và chạy một container từ Docker image vừa xây dựng:
bash Copy docker run -p 8080:8080 docker-example -
Truy cập ứng dụng
Mở trình duyệt web và truy cập http://localhost:8080. Bạn sẽ thấy thông báo "Hello, Docker!".
Lợi ích của Docker
Docker mang lại nhiều lợi ích cho quá trình phát triển và triển khai ứng dụng:
- Tính nhất quán: Docker đảm bảo rằng ứng dụng sẽ hoạt động nhất quán trên nhiều môi trường khác nhau, từ máy phát triển đến máy chủ sản xuất.
- Tính di động: Docker container có thể chạy trên nhiều nền tảng khác nhau, bao gồm máy tính cá nhân, máy chủ vật lý, máy ảo, và các dịch vụ đám mây.
- Hiệu quả tài nguyên: Docker container nhẹ hơn so với máy ảo vì chúng chia sẻ kernel của hệ điều hành chủ và chỉ bao gồm các thành phần cần thiết để chạy ứng dụng.
- Tính linh hoạt: Docker cho phép dễ dàng mở rộng và thu nhỏ ứng dụng bằng cách thêm hoặc xóa các container.
- Tích hợp CI/CD: Docker tích hợp tốt với các công cụ CI/CD, giúp tự động hóa quá trình xây dựng, kiểm thử và triển khai ứng dụng.
Kết luận
Docker là một công cụ mạnh mẽ giúp đơn giản hóa quá trình phát triển, kiểm thử và triển khai ứng dụng. Bằng cách sử dụng Docker, các nhà phát triển có thể đảm bảo rằng ứng dụng của họ sẽ hoạt động nhất quán trên nhiều môi trường khác nhau, từ máy phát triển đến máy chủ sản xuất. Docker cũng mang lại nhiều lợi ích về tính di động, hiệu quả tài nguyên, và tính linh hoạt, giúp tối ưu hóa quá trình phát triển và triển khai ứng dụng.
Admin Team
Donate cho tác giảGợi ý câu hỏi phỏng vấn
Không có dữ liệu
Gợi ý bài viếtKhông có dữ liệu
Bình luận
Chưa có bình luận nào
Gửi- TechMely5K Theo dõi
- TechMely6.5k Theo dõi
- TechMely51 Theo dõi
- TechMely Fanpage5k
- Group tìm việc FrontEnd10k
- Tìm việc Backend, Devops8k
Từ khóa » Docker Là Gì
-
Docker Là Gì ? Kiến Thức Cơ Bản Về Docker - Viblo
-
Docker Là Gì? Tìm Hiểu Thêm Kiến Thức Về Docker | TopDev
-
Docker Là Gì? Tìm Hiểu Về Dự án Mã Nguồn Mở Docker Từ A - Z
-
Docker Là Gì? - AWS
-
Docker Là Gì? Kiến Thức Cơ Bản Về Docker Không Thể Bỏ Lỡ
-
Docker Là Gì? Hướng Dẫn Sử Dụng Docker Cơ Bản - Vietnix
-
Docker Là Gì Và Tại Sao Chúng Ta Lại Sử Dụng Nó Khi Phát Triển Phần ...
-
Docker Là Gì? Kiến Thức Chuyên Sâu Về Docker Không Nên Bỏ Lỡ
-
Docker Là Gì? Sự Khác Nhau Giữa Docker Và VPS
-
Docker Là Gì, Docker Dành Cho Ai - Tenten
-
Docker Là Gì? Hãy để Senior DevOps Engineer Trả Lời Cho Bạn! - ITviec
-
Docker Là Gì? Docker Khác Biệt Thế Nào So Với VPS?
-
Docker Là Gì? Giải đáp Về Docker Container Những điều Cần Biết?
-
Docker Là Gì? Tìm Hiểu Về Docker - Tin Tức Tên Miền Hosting