- Bài 1. Cơ Bản Docker: Hiểu Container và Vai Trò trong DevOps
- Bài 2. Docker Image: cách xây Dựng và tối Ưu
- Bài 3. Docker Networking: Kết Nối Container Hiệu Quả
- Bài 4. Docker Volume: Quản Lý Dữ Liệu Hiệu Quả cho Container
- Bài 5. Docker Compose: Điều Phối Multi-Container Hiệu Quả
- Bài 6. Docker Swarm: Orchestration Cơ Bản để Scale Container
- Bài 7. Docker Security: Bảo Mật Container Hiệu Quả
- Bài 8. Docker CI/CD: Tích Hợp Container vào Pipeline DevOps
- Bài 9. Docker Monitoring: Theo Dõi và Logging Container Hiệu Quả
- Bài 10. Docker resources: Tối Ưu và Debug Container Hiệu Quả
- Bài 11. Docker và Microservices: Thiết Kế Ứng Dụng Phân Tán
- Bài 12. Docker Registry: Tự Host và Quản Lý Image Hiệu Quả
- Bài 13. Docker với Cloud: Tích Hợp Container trên AWS ECS và GCP Cloud Run
Nếu bạn làm DevOps, chắc chắn đã thấy sức mạnh của Docker trong việc xây dựng và triển khai ứng dụng. Nhưng làm sao để đưa nó vào pipeline CI/CD một cách trơn tru? Trong bài thứ tám của series, tôi sẽ dẫn bạn qua cách tích hợp Docker trong CI/CD, từ build image CI, chạy test container, đến deploy – tất cả đều thực tế và hiệu quả. Đây là những gì tôi đúc kết từ việc setup pipeline cho team, không chỉ là lý thuyết đâu nhé!
Tại Sao Docker Là Tâm Điểm của CI/CD?
Vai Trò trong DevOps
CI/CD yêu cầu tốc độ, nhất quán, và khả năng tái tạo – Docker đáp ứng tất cả:
- Build: Container hóa môi trường build.
- Test: Chạy test trong container cô lập.
- Deploy: Push image lên registry, deploy nhanh.
Ví dụ thực tế: Một team từng mất 10 phút setup môi trường test thủ công. Dùng Docker, thời gian giảm còn 2 phút, mọi thứ giống hệt từ dev đến prod.
Lợi Ích của Pipeline Container
- Consistency: Không còn “works on my machine”.
- Speed: Build/test song song trong container.
- Isolation: Test không ảnh hưởng host.
DevOps: Docker biến pipeline thành cỗ máy tự động, đáng tin cậy.
Cách Tích Hợp Docker vào CI/CD
Build Image trong CI
- Mục tiêu: Build image từ code, push lên registry.
- Công cụ: Docker CLI, GitLab CI, Jenkins.
Ví dụ: Build image Flask app trong GitLab CI:
build:
image: docker:20.10
services:
- docker:dind
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ""
script:
- docker build -t myapp:$CI_COMMIT_SHA .
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
- docker push myapp:$CI_COMMIT_SHA
Test trong Container
- Mục tiêu: Chạy test trong môi trường cô lập.
- Cách làm: Dùng image vừa build hoặc image test riêng.
Ví dụ: Test với pytest:
test:
image: myapp:$CI_COMMIT_SHA
script:
- pip install pytest
- pytest tests/
Deploy từ CI/CD
- Mục tiêu: Cập nhật service hoặc chạy container production.
- Ví dụ: Deploy lên Swarm (bài 6):
deploy: image: docker:20.10 services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD - docker service update --image myapp:$CI_COMMIT_SHA web
DevOps: Pipeline tự động từ commit đến deploy, không cần can thiệp tay.
Thực Hành: Pipeline GitLab CI với Docker
Chuẩn Bị Ứng Dụng
Dockerfile:
FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY app.py . CMD ["python", "app.py"]
app.py
:from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello CI/CD!" if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)
requirements.txt
:flask==2.0.1
tests/test_app.py:
import requests def test_hello(): response = requests.get("http://localhost:5000") assert response.text == "Hello CI/CD!"
File .gitlab-ci.yml
stages:
- build
- test
- deploy
build:
stage: build
image: docker:20.10
services:
- docker:dind
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ""
script:
- docker build -t registry.gitlab.com/user/myapp:$CI_COMMIT_SHA .
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com
- docker push registry.gitlab.com/user/myapp:$CI_COMMIT_SHA
test:
stage: test
image: registry.gitlab.com/user/myapp:$CI_COMMIT_SHA
services:
- name: registry.gitlab.com/user/myapp:$CI_COMMIT_SHA
alias: app
script:
- pip install pytest requests
- pytest tests/
deploy:
stage: deploy
image: docker:20.10
services:
- docker:dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com
- docker pull registry.gitlab.com/user/myapp:$CI_COMMIT_SHA
- docker run -d -p 5000:5000 registry.gitlab.com/user/myapp:$CI_COMMIT_SHA
Chạy và Kiểm Tra
- Commit code lên GitLab.
- Xem pipeline:
- Build: Image push lên registry.
- Test: Pytest chạy trong container.
- Deploy: Container chạy trên runner.
- Test:
curl localhost:5000
- Kết quả: “Hello CI/CD!”.
Debug tip:
- Build lỗi: Check log CI, đảm bảo Dockerfile đúng.
- Test fail: Xem
pytest
output trong CI.
Ứng Dụng Thực Tế
Tăng Tốc Pipeline
- Song song: Chạy test DB, API cùng lúc trong container riêng.
- Caching: Dùng layer cache (bài 2) để build nhanh hơn.
Case study: Một team giảm thời gian pipeline từ 15 phút xuống 4 phút nhờ Docker và job song song.
Deploy Production
- Tích hợp Swarm/Kubernetes:
deploy: script: - docker service update --image myapp:$CI_COMMIT_SHA web
Thực tế: Tôi từng setup pipeline tương tự, deploy 10 commit/ngày mà không lỗi môi trường – Docker làm mọi thứ mượt mà.
Kết Luận
Docker trong CI/CD là cách để tự động hóa pipeline từ build image CI, test container, đến deploy – nhanh, nhất quán, và đáng tin cậy. Thực hành với GitLab CI cho thấy bạn có thể áp dụng ngay vào dự án thực tế. Bài tiếp theo, chúng ta sẽ khám phá Docker Monitoring và Logging – cách theo dõi container trong DevOps.
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
cở sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty