Skip to content
Thuan Bui's Blog
Go back

Hướng dẫn cài đặt Docker, Docker Compose trên Linux (Ubuntu / Arch / Debian ...)

Updated:

Tiếp tục với các bài viết về homelab, hôm nay sẽ là bài viết hướng dẫn cách cài đặt Docker và Docker Compose trên Ubuntu 20.04 LTS.

I. Docker là gì?

Docker là một nền tảng ảo hoá mã nguồn mở giúp bạn build, test và deploy ứng dụng dưới dạng container trên mọi môi trường máy chủ, máy ảo khác nhau. Nó cho phép tạo môi trường độc lập, tách biệt khỏi hệ điều hành để khởi chạy hoặc phát triển ứng dụng. Môi trường ảo này được gọi là container.

Lợi ích của Docker so với sử dụng máy ảo VM

Hiện tại mình đang dùng Docker trên máy ảo Hyper-V ở nhà để chạy Adguard Home, Omada Controller, Nginx Proxy Manager.

II. Cài đặt Docker

Cập nhật 08/01/2024: Bạn có thể thay thế toàn bộ các bước cài đặt Docker và Docker Compose bên dưới chỉ bằng 2 dòng lệnh sau

Terminal window
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

1. Chuẩn bị hệ thống

Đầu tiên, cài đặt các package cần thiết để chuẩn bị cho việc cài đặt Docker.

Terminal window
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

Thêm Docker’s official GPG key vào hệ thống

Terminal window
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Thiết lập Docker repository

Terminal window
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

Nếu bạn đang cài đặt cho Ubuntu 20.04 chạy trên Raspberry Pi, sử dụng lệnh này để thiết lập Docker repository

Terminal window
echo \
"deb [arch=arm64 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

2. Cài đặt Docker Engine

Sử dụng apt-get (hoặc apt) để cài đặt Docker vào máy

Terminal window
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Để xác nhận Docker đã được cài đặt và hoạt động ổn định, kiểm tra bằng cách sau

Terminal window
sudo docker run hello-world

Nếu nhận được thông báo Hello from Docker! như hình dưới đây thì Docker đã sẵn sàng hoạt động

Terminal window
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
<https://hub.docker.com/>
For more examples and ideas, visit:
<https://docs.docker.com/get-started/>

3. Thêm user vào group Docker

Để quản lý Docker dưới tài khoản non-root (không cần phải chèn sudo khi gõ lệnh), bạn cần gán tài khoản hiện tại vào user group Docker như sau

Terminal window
sudo groupadd docker
sudo usermod -aG docker $USER

III. Cài đặt Docker Compose

Tiếp theo, cài đặt thêm Docker Compose để sau này có thể khởi tạo các ứng dụng sử dụng nhiều container một cách nhanh chóng.

Docker Compose là một công cụ dùng để định nghĩa và chạy các chương trình Docker sử dụng nhiều container (multi-container). Với Docker Compose, chúng ta sử dụng một file YAML để thiết lập các service cần thiết cho chương trình. Cuối cùng, với một câu lệnh duy nhất, bạn sẽ thiết lập được 1 hệ thống hoàn chỉnh mà không cần phải chạy từng dòng lệnh mất thời gian.

1. Cài đặt trên máy tính Intel / AMD

Tải Docker Compose phiên bản mới nhất về máy

Terminal window
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Thiết lập quyền thực thi cho docker-compose và tạo symlink

Terminal window
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Kiểm tra lại docker-compose đã cài đặt thành công chưa bằng lệnh

docker-compose --version

2. Cài đặt trên ARM (Rapsberry Pi)

Với các máy tính sử dụng CPU nền tảng ARM như Raspberry Pi hay Oracle Cloud Ampere, bạn cần phải cài đặt Docker-Compose thông qua Python như dưới đây

Terminal window
# Install required packages
sudo apt update
sudo apt install -y python3-pip libffi-dev
# Install Docker Compose from pip (using Python3)
# This might take a while
sudo pip install docker-compose

Kiểm tra lại docker-compose đã cài đặt thành công chưa bằng lệnh

docker-compose --version

IV. Thiết lập WordPress với Docker Compose

Mình sẽ cho chạy 1 site WordPress trên máy với Docker Compose để thử nghiệm Docker Compose.

Đầu tiên, tạo thư mục riêng cho dự án

Terminal window
mkdir wordpress
cd wordpress

Tiếp theo tạo file docker-compose.yml để cấu hình các container cần thiết để chạy WordPress

Terminal window
sudo nano docker-compose.yml

Điền thông tin này vào và lưu lại

version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}

Khởi tạo dự án

Terminal window
sudo docker-compose up -d

Đợi vài phút cho Docker xử lý các thao tác: tải container wordpress, mysql về máy và khởi tạo dự án.

Terminal window
Status: Downloaded newer image for wordpress:latest
Creating wordpress_db_1 ... done
Creating wordpress_wordpress_1 ... done

Khi thấy thông báo này nghĩa là WordPress đã sẵn sàng. Truy cập theo địa chỉ sau

http://<IP-Adress>:8000

Port 8000 là port bạn khai báo trong file docker-compose.yml. Nếu server chưa dùng đến cổng 80, bạn có thể đổi chỗ dòng ports thành

ports:
- "80:80"

Cho chạy lại docker-compose và truy cập trực tiếp WordPress theo địa chỉ IP

http://<IP-Adress>/
Giờ cài đặt WordPres là xong.
Giờ cài đặt WordPres là xong.

Nếu không cần dùng WordPress nữa, bạn có thể tắt ứng dụng đi bằng lệnh

Terminal window
sudo docker-compose down

Nếu thấy sử dụng lệnh CLI khó nhớ, các bạn có thể cài đặt thêm Portainer để quản lý Docker.

https://thuanbui.me/quan-ly-docker-truc-quan-va-hieu-qua-hon-voi-portainer/


Share this post on:

Previous Post
Sao lưu dữ liệu bằng Borg Backup lên Hetzner Storage Box
Next Post
Kích hoạt FastTrack và hoạt động cùng Mangle Rule trên Mikrotik RouterOS