Docker đã trở thành một công cụ không thể thiếu đối với các nhà phát triển và quản trị viên hệ thống. Việc Cài Docker Trên Ubuntu giúp đơn giản hóa quá trình triển khai ứng dụng, đảm bảo tính nhất quán và khả năng mở rộng cao. Bài viết này sẽ hướng dẫn bạn từng bước cài đặt Docker trên Ubuntu, từ những khái niệm cơ bản đến các lệnh thường dùng.
Docker là gì và tại sao bạn nên cài trên Ubuntu?
Docker là một nền tảng containerization cho phép bạn đóng gói ứng dụng và tất cả các phụ thuộc của nó vào một container. Container này có thể chạy trên bất kỳ hệ thống nào có cài Docker, bất kể môi trường là gì. Điều này giúp đảm bảo rằng ứng dụng của bạn sẽ chạy giống nhau trên máy phát triển, máy thử nghiệm và máy sản xuất.
Tại sao lại là Ubuntu? Ubuntu là một trong những bản phân phối Linux phổ biến nhất, nổi tiếng với tính ổn định, dễ sử dụng và cộng đồng hỗ trợ lớn mạnh. Việc cài Docker trên Ubuntu được hỗ trợ rất tốt, với nhiều tài liệu và hướng dẫn trực tuyến. Ngoài ra, Ubuntu còn cung cấp một loạt các công cụ và thư viện phát triển, khiến nó trở thành một lựa chọn tuyệt vời cho việc phát triển và triển khai ứng dụng Docker.
Lợi ích của việc sử dụng Docker trên Ubuntu:
- Tính nhất quán: Đảm bảo ứng dụng chạy giống nhau trên mọi môi trường.
- Khả năng mở rộng: Dễ dàng mở rộng ứng dụng bằng cách tạo nhiều container.
- Tiết kiệm tài nguyên: Container chia sẻ kernel của hệ điều hành, tiết kiệm tài nguyên hơn so với máy ảo.
- Dễ dàng quản lý: Docker cung cấp các công cụ để quản lý container, image và network.
- Tăng tốc độ phát triển: Giảm thời gian triển khai ứng dụng.
“Docker giúp chúng tôi giảm thời gian triển khai ứng dụng từ vài ngày xuống còn vài phút. Tính nhất quán mà nó mang lại là vô giá,” anh Nguyễn Văn An, kỹ sư DevOps tại một công ty startup chia sẻ.
Yêu cầu hệ thống trước khi cài Docker trên Ubuntu
Trước khi bắt đầu quá trình cài Docker trên Ubuntu, bạn cần đảm bảo hệ thống của mình đáp ứng các yêu cầu sau:
- Hệ điều hành: Ubuntu 18.04 LTS trở lên (khuyến nghị phiên bản mới nhất).
- Kiến trúc: x86_64 (64-bit).
- Quyền: Tài khoản người dùng có quyền
sudo
. - Kết nối Internet: Để tải xuống các gói cần thiết.
Bạn có thể kiểm tra phiên bản Ubuntu của mình bằng lệnh sau:
lsb_release -a
Nếu bạn đang sử dụng một phiên bản Ubuntu cũ hơn, hãy cân nhắc nâng cấp lên phiên bản mới nhất để đảm bảo khả năng tương thích và bảo mật tốt nhất.
Các bước cài đặt Docker trên Ubuntu
Dưới đây là hướng dẫn chi tiết từng bước để cài Docker trên Ubuntu.
Bước 1: Cập nhật hệ thống
Trước khi cài đặt bất kỳ phần mềm mới nào, bạn nên cập nhật hệ thống của mình để đảm bảo rằng tất cả các gói hiện có đều được cập nhật lên phiên bản mới nhất. Mở terminal và chạy các lệnh sau:
sudo apt update
sudo apt upgrade
Lệnh apt update
sẽ tải xuống thông tin gói mới nhất từ các kho lưu trữ. Lệnh apt upgrade
sẽ cài đặt các bản cập nhật cho các gói hiện có.
Bước 2: Cài đặt các gói cần thiết
Docker yêu cầu một số gói phụ thuộc để hoạt động. Cài đặt các gói này bằng lệnh sau:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
Các gói này bao gồm:
apt-transport-https
: Cho phépapt
truy cập các kho lưu trữ qua HTTPS.ca-certificates
: Chứng chỉ CA cho phép xác thực HTTPS.curl
: Công cụ dòng lệnh để tải xuống dữ liệu từ Internet.gnupg
: Công cụ mã hóa và chữ ký GnuPG.lsb-release
: Cung cấp thông tin về bản phân phối Linux.
Bước 3: Thêm khóa GPG của Docker
Để xác minh các gói Docker bạn tải xuống là chính hãng, bạn cần thêm khóa GPG của Docker vào hệ thống của mình. Chạy lệnh sau:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Lệnh này sẽ tải xuống khóa GPG của Docker và lưu nó vào /usr/share/keyrings/docker-archive-keyring.gpg
.
Bước 4: Thêm kho lưu trữ Docker
Tiếp theo, bạn cần thêm kho lưu trữ Docker vào danh sách các nguồn gói của hệ thống. Chạy lệnh sau:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Lệnh này sẽ thêm dòng cấu hình kho lưu trữ Docker vào tệp /etc/apt/sources.list.d/docker.list
.
Bước 5: Cài đặt Docker Engine
Bây giờ bạn đã sẵn sàng để cài Docker trên Ubuntu. Cập nhật lại danh sách gói và cài đặt Docker Engine, containerd và Docker Compose bằng lệnh sau:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Docker Engine là thành phần cốt lõi của Docker, cung cấp các chức năng để xây dựng, chạy và quản lý container. containerd.io
là một runtime container, chịu trách nhiệm quản lý vòng đời của container. docker-compose-plugin
cho phép bạn định nghĩa và chạy các ứng dụng đa container.
Bước 6: Kiểm tra cài đặt Docker
Sau khi cài đặt xong, bạn có thể kiểm tra xem Docker đã được cài đặt thành công hay chưa bằng cách chạy lệnh sau:
sudo docker run hello-world
Lệnh này sẽ tải xuống một image Docker nhỏ có tên hello-world
và chạy nó trong một container. Nếu mọi thứ hoạt động bình thường, bạn sẽ thấy một thông báo chào mừng từ Docker.
“Việc cài đặt Docker trên Ubuntu không hề khó khăn nếu bạn làm theo đúng hướng dẫn. Quan trọng nhất là phải cập nhật hệ thống và thêm đúng kho lưu trữ của Docker,” chị Trần Thị Bình, chuyên gia về Docker tại một công ty công nghệ lớn nhấn mạnh.
Bước 7: Quản lý Docker như một người dùng không phải root
Theo mặc định, Docker yêu cầu quyền sudo
để chạy các lệnh. Để có thể chạy Docker mà không cần sudo
, bạn cần thêm người dùng của mình vào nhóm docker
. Chạy lệnh sau:
sudo usermod -aG docker $USER
newgrp docker
Lệnh usermod
sẽ thêm người dùng hiện tại vào nhóm docker
. Lệnh newgrp
sẽ áp dụng thay đổi nhóm cho phiên hiện tại. Sau khi chạy các lệnh này, bạn cần đăng xuất và đăng nhập lại để các thay đổi có hiệu lực.
Bây giờ bạn có thể chạy các lệnh Docker mà không cần sudo
. Ví dụ:
docker ps
Lệnh này sẽ hiển thị danh sách các container đang chạy.
Các lệnh Docker cơ bản bạn cần biết sau khi cài đặt
Sau khi cài Docker trên Ubuntu, bạn cần làm quen với một số lệnh Docker cơ bản để có thể sử dụng nó một cách hiệu quả.
docker run
: Chạy một container từ một image. Ví dụ:docker run ubuntu bash
sẽ chạy một container Ubuntu và mở một shell Bash.docker ps
: Liệt kê các container đang chạy. Sử dụngdocker ps -a
để liệt kê tất cả các container, bao gồm cả những container đã dừng.docker images
: Liệt kê các image Docker đã tải xuống.docker pull
: Tải xuống một image Docker từ Docker Hub. Ví dụ:docker pull nginx
sẽ tải xuống image Nginx.docker stop
: Dừng một container đang chạy. Ví dụ:docker stop <container_id>
sẽ dừng container có ID<container_id>
.docker start
: Khởi động một container đã dừng. Ví dụ:docker start <container_id>
sẽ khởi động container có ID<container_id>
.docker rm
: Xóa một container. Ví dụ:docker rm <container_id>
sẽ xóa container có ID<container_id>
.docker rmi
: Xóa một image Docker. Ví dụ:docker rmi <image_id>
sẽ xóa image có ID<image_id>
.docker build
: Xây dựng một image Docker từ một Dockerfile.docker-compose up
: Khởi động một ứng dụng đa container được định nghĩa trong tệpdocker-compose.yml
.
Docker Compose: Quản lý ứng dụng đa container dễ dàng
Docker Compose là một công cụ cho phép bạn định nghĩa và chạy các ứng dụng đa container. Bạn định nghĩa các dịch vụ của ứng dụng trong một tệp docker-compose.yml
, sau đó sử dụng lệnh docker-compose up
để khởi động tất cả các dịch vụ cùng một lúc.
Ví dụ, bạn có thể sử dụng Docker Compose để chạy một ứng dụng web với một container cho web server (ví dụ: Nginx) và một container cho database (ví dụ: MySQL).
Để sử dụng Docker Compose, bạn cần cài đặt nó trên hệ thống của mình. Trên Ubuntu, bạn có thể cài đặt Docker Compose bằng lệnh sau:
sudo apt install docker-compose-plugin
Sau khi cài đặt, bạn có thể tạo một tệp docker-compose.yml
để định nghĩa các dịch vụ của ứng dụng.
Đây là một ví dụ đơn giản về tệp docker-compose.yml
:
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
Tệp này định nghĩa hai dịch vụ: web
và db
. Dịch vụ web
sử dụng image nginx:latest
và ánh xạ cổng 80 của container vào cổng 80 của máy chủ. Dịch vụ db
sử dụng image mysql:5.7
và đặt mật khẩu root cho database.
Để khởi động ứng dụng, bạn chỉ cần chạy lệnh sau trong thư mục chứa tệp docker-compose.yml
:
docker-compose up -d
Lệnh này sẽ tải xuống các image cần thiết, tạo các container và khởi động chúng ở chế độ nền.
Giải quyết các vấn đề thường gặp khi cài Docker trên Ubuntu
Trong quá trình cài Docker trên Ubuntu, bạn có thể gặp phải một số vấn đề. Dưới đây là một số vấn đề thường gặp và cách giải quyết:
-
Lỗi “Permission denied” khi chạy lệnh Docker: Điều này thường xảy ra khi bạn chưa thêm người dùng của mình vào nhóm
docker
. Hãy làm theo hướng dẫn ở Bước 7 để giải quyết vấn đề này. -
Lỗi “Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”: Điều này có nghĩa là Docker daemon không chạy. Bạn có thể khởi động Docker daemon bằng lệnh sau:
sudo systemctl start docker
Nếu Docker daemon không khởi động, hãy kiểm tra nhật ký của Docker để biết thêm thông tin:
sudo journalctl -u docker.service
-
Lỗi “No space left on device”: Điều này có nghĩa là bạn đã hết dung lượng ổ đĩa. Bạn có thể giải phóng dung lượng bằng cách xóa các image và container không sử dụng.
docker system prune -a
Lệnh này sẽ xóa tất cả các container đã dừng, image không sử dụng, network không sử dụng và cache build.
-
Lỗi liên quan đến mạng (networking): Vấn đề liên quan đến mạng có thể phát sinh nếu bạn không cấu hình mạng Docker đúng cách hoặc nếu có xung đột cổng với các ứng dụng khác. Hãy đảm bảo bạn đã mở port firewall ubuntu cần thiết để cho phép container giao tiếp.
-
Xung đột phiên bản gói: Đôi khi, xung đột phiên bản giữa các gói phần mềm có thể gây ra lỗi trong quá trình cài đặt. Hãy đảm bảo rằng bạn đã cập nhật hệ thống lên phiên bản mới nhất và sử dụng các kho lưu trữ phần mềm chính thức của Ubuntu và Docker.
-
Lỗi liên quan đến Docker Compose: Nếu bạn gặp sự cố khi sử dụng Docker Compose, hãy kiểm tra tệp
docker-compose.yml
của bạn để đảm bảo rằng nó được định dạng đúng và không có lỗi cú pháp. Ngoài ra, hãy kiểm tra nhật ký của Docker Compose để biết thêm thông tin.
Mẹo và thủ thuật khi sử dụng Docker trên Ubuntu
Dưới đây là một số mẹo và thủ thuật giúp bạn sử dụng Docker trên Ubuntu một cách hiệu quả hơn:
- Sử dụng Dockerfile để tự động hóa quá trình xây dựng image: Dockerfile là một tệp văn bản chứa các hướng dẫn để xây dựng một image Docker. Sử dụng Dockerfile giúp bạn tự động hóa quá trình xây dựng image và đảm bảo tính nhất quán.
- Sử dụng Docker Hub để chia sẻ image: Docker Hub là một kho lưu trữ công cộng cho các image Docker. Bạn có thể sử dụng Docker Hub để chia sẻ image của mình với cộng đồng hoặc tải xuống image từ người khác.
- Sử dụng volume để lưu trữ dữ liệu: Volume là một cơ chế để lưu trữ dữ liệu mà không bị mất khi container bị xóa. Sử dụng volume để lưu trữ dữ liệu quan trọng của ứng dụng.
- Sử dụng network để kết nối các container: Network cho phép các container giao tiếp với nhau. Sử dụng network để kết nối các container của ứng dụng đa container.
- Sử dụng Docker Compose để quản lý ứng dụng đa container: Docker Compose giúp bạn định nghĩa và chạy các ứng dụng đa container một cách dễ dàng.
- Thường xuyên cập nhật Docker: Docker liên tục phát triển và cải tiến. Hãy thường xuyên cập nhật Docker lên phiên bản mới nhất để tận hưởng các tính năng mới và bản sửa lỗi.
- Tìm hiểu về Docker Swarm và Kubernetes: Nếu bạn cần triển khai ứng dụng Docker trên quy mô lớn, hãy tìm hiểu về Docker Swarm và Kubernetes. Đây là các công cụ orchestration container mạnh mẽ giúp bạn quản lý và mở rộng ứng dụng Docker một cách dễ dàng.
- Tối ưu hóa Dockerfile: Để tối ưu hóa kích thước và hiệu suất của image, hãy tuân thủ các best practice khi viết Dockerfile, chẳng hạn như sử dụng multi-stage builds, giảm thiểu số lượng layer, và sử dụng các base image nhỏ gọn.
- Sử dụng .dockerignore: Tạo một tệp
.dockerignore
để loại trừ các tệp và thư mục không cần thiết khỏi quá trình build image, giúp giảm kích thước image và tăng tốc độ build.
Kết luận
Việc cài Docker trên Ubuntu không chỉ là một kỹ năng cần thiết cho các nhà phát triển và quản trị viên hệ thống mà còn là một bước tiến quan trọng trong việc hiện đại hóa quy trình phát triển và triển khai ứng dụng. Với hướng dẫn chi tiết này, hy vọng bạn đã nắm vững các bước cài đặt và có thể bắt đầu sử dụng Docker một cách hiệu quả. Đừng quên khám phá thêm các tính năng nâng cao và công cụ hỗ trợ của Docker để tận dụng tối đa sức mạnh của nó. Mekong WIKI mong muốn trở thành người bạn đồng hành tin cậy trên con đường chinh phục công nghệ của bạn.
Câu hỏi thường gặp (FAQ)
-
Docker có miễn phí không?
Có, Docker Community Edition (CE) là miễn phí và mã nguồn mở. Docker Enterprise Edition (EE) là một phiên bản thương mại với các tính năng và hỗ trợ bổ sung.
-
Tôi có thể cài Docker trên các phiên bản Ubuntu cũ hơn không?
Mặc dù có thể cài Docker trên các phiên bản Ubuntu cũ hơn, nhưng bạn nên sử dụng Ubuntu 18.04 LTS trở lên để đảm bảo khả năng tương thích và bảo mật tốt nhất.
-
Làm thế nào để gỡ cài đặt Docker trên Ubuntu?
Bạn có thể gỡ cài đặt Docker bằng lệnh sau:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin sudo rm -rf /var/lib/docker sudo rm -rf /var/run/docker.sock
-
Tôi có thể sử dụng Docker với các ngôn ngữ lập trình khác không?
Có, Docker hỗ trợ nhiều ngôn ngữ lập trình, bao gồm Python, Java, Node.js, Go, và nhiều ngôn ngữ khác.
-
Docker khác gì so với máy ảo (VM)?
Docker sử dụng container, chia sẻ kernel của hệ điều hành, tiết kiệm tài nguyên hơn so với máy ảo (VM), mỗi máy ảo yêu cầu một hệ điều hành riêng.
-
Làm thế nào để kiểm tra phiên bản Docker đã cài đặt?
Bạn có thể kiểm tra phiên bản Docker bằng lệnh sau:
docker version
-
Docker có an toàn không?
Docker cung cấp nhiều tính năng bảo mật, nhưng bạn cần cấu hình và sử dụng chúng đúng cách để đảm bảo an toàn cho ứng dụng của mình. Hãy tìm hiểu về các best practice bảo mật Docker để bảo vệ hệ thống của bạn.