- vừa được xem lúc

Khởi tạo Jenkins Container trên Docker cơ bản (Phần 1)

0 0 1

Người đăng: Doan Trung Kien

Theo Viblo Asia

Giới thiệu

  • Bài viết này được viết ra nhằm mục đích trao đổi và học hỏi thêm về Jenkins cũng như là CI/CD. Bởi vì, tôi không phải là người chuyển về mảng Dev Ops nên là mục đích viết ra mục đích này để nhận được thêm kiến thức từ việc research của tôi cũng như là đóng góp từ các bạn đọc bài viết này của tôi. Cảm ơn các bạn!
  • Jenkins là một công cụ tự động hóa mã nguồn mở, thường được sử dụng trong quy trình CI/CD (Continuous Integration / Continuous Delivery) – tức là tích hợp và triển khai liên tục. Giúp cho việc phát triển ứng dụng một cách dễ dàng và nhanh chóng.
  • Trong công nghệ phần mềm, CI/CD hoặc CICD là thực tiễn kết hợp của tích hợp liên tục và phân phối liên tục hoặc triển khai liên tục ít thường xuyên hơn. Đôi khi chúng được gọi chung là phát triển liên tục hoặc phát triển phần mềm liên tục.

1. Jenkins là gì?

  • Jenkins giúp tự động hóa việc build, test, và deploy ứng dụng phần mềm.
  • Được viết bằng Java, hỗ trợ rất nhiều plugin để tích hợp với các công cụ khác như Git, Maven, Docker, Kubernetes, v.v.
Jenkins

2. Ưu điểm và nhược điểm.

2.1. Ưu điểm.

  1. Tự động hóa CI/CD mạnh mẽ: Jenkins giúp tự động build, test, deploy phần mềm, giảm công việc thủ công.
  2. Plugin phong phú: Có hơn 1.800 plugin hỗ trợ tích hợp với các công cụ như Git, Docker, Slack, Kubernetes, v.v.
  3. Mã nguồn mở, miễn phí: Không tốn chi phí bản quyền, cộng đồng đông đảo và cập nhật thường xuyên.
  4. Tích hợp tốt với Git: Hỗ trợ tự động hóa pipeline mỗi khi có commit/pull request.
  5. Dễ mở rộng & tùy biến: Có thể xây dựng các pipeline phức tạp theo nhu cầu thực tế của doanh nghiệp.
  6. Web UI trực quan: Giao diện dễ dùng, dễ theo dõi build pipeline.

2.2. Nhược điểm.

  1. Cấu hình ban đầu phức tạp: Đối với người mới, việc cài đặt và cấu hình pipeline có thể gây khó khăn.
  2. Phụ thuộc plugin: Sử dụng nhiều plugin khiến hệ thống dễ bị lỗi nếu plugin không tương thích.
  3. Không thân thiện với người không chuyên DevOps: Cần hiểu về CI/CD, shell, Git, cấu hình môi trường,… mới dùng hiệu quả.
  4. Hiệu năng có thể giảm nếu quản lý kém: Nếu không tối ưu hóa job và tài nguyên máy, Jenkins dễ bị chậm hoặc treo.
  5. Bảo mật phải tự quản lý: Cần cẩn thận phân quyền người dùng và bảo mật hệ thống Jenkins.

Triển khai

Sau khi bạn nắm khái quát về khái niệm thì bước tiếp theo cùng nhau đi start-up một Jenkins trên local bằng Docker theo các bước sau nhé. Lưu ý: trước khi thực hiện cần chuẩn bị các công cụ Docker. Bạn có thể download và đường dẫn: https://www.docker.com/products/docker-desktop/

Bước 1: Pull Image

  • Bạn truy cập vào trang docker hub để pull Jenkins image về thông qua link: https://hub.docker.com/r/jenkins/jenkins
  • Bạn thực hiện copy lệnh dưới đây và dáng trên terminal của bạn
docker pull jenkins/jenkins

docker pull

Bước 2: Tạo Volume

  • Để lưu trữ dữ liệu Jenkins bạn thực hiện lệnh sau:
docker volume create jenkins_home

Bước 3: Run Container

  • Bạn thực hiện lệnh sau:
docker run --name jenkins-blueocean -p 8080:8080 -p 50000:50000 -d -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
  • Giải thích về lệnh:
    • docker run: Lệnh khởi chạy một container Docker mới.
    • --name jenkins-blueocean: Đặt tên với container.
    • -p 8080:8080: Expose cổng 8080: Jenkins Web UI sẽ chạy trên cổng này. Bạn sẽ truy cập Jenkins tại http://localhost:8080.
    • -p 50000:50000: Expose cổng 50000: Dùng cho Jenkins agents (kết nối Master/Slave hoặc Build Agents).
    • -d: Detached mode: chạy container ở chế độ nền (background), không chiếm terminal.
    • -v jenkins_home:/var/jenkins_home: Gắn volume: tạo volume tên jenkins_home và mount nó vào đường dẫn /var/jenkins_home trong container để lưu dữ liệu Jenkins (plugins, job config,...).
    • jenkins/jenkins: Image Docker chính thức của Jenkins, sẽ được pull từ Docker Hub nếu chưa có trong máy.
  • Sau đó, bạn có thể kiểm tra container bằng cách sử dụng lệnh:
docker ps

docker run
  • Sau khi bạn kiểm tra đã tạo container thành công. Bạn có thể kiểm trạ trạng thái chạy và administrator password khởi động Jenkins thông qua lệnh:
docker logs <CONTAINER_ID>
  • Nếu như bạn bạn chưa thấy được administartor password thì bạn có thể sử dụng lệnh bên dưới để lấy administrator password:
docker exec jenkins-blueocean cat /var/jenkins_home/secrets/initialAdminPassword

Bước 3: Khởi động Jenkins

  • Sau khi bạn đã lấy được administrator password, bạn hãy truy cập vào localhost:8080 để truy cập vào Jenkins.

  • Nhập Administrator password, sau đó nhấn continue.

  • Tiếp theo, bạn chọn tiếp tục Install suggested plugins, việc này giúp nó thực hiện giúp bạn cài đặt những plugins cần thiết cho Jenkins.

  • Sau khi xong quá trình cài đặt các plugins, thì bây giờ bạn hãy nhập username và password đã được tạo mới của bạn, nhấn đăng nhập và Jenkins homepage sẽ được hiển thị ra cho bạn.

Jenkins Homepage
  • Vậy đã bạn thành công khởi động Jenkins bằng Docker rồi đấy! Chúc bạn thành công!

Tóm lại

  • Đây chỉ là bài viết nhằm giúp mọi người hiểu cơ bản về Jenkins và các khởi động Jenkins bằng Docker. Có rất là nhiều cách để tạo ra Jenkins nhưng trong bài viết này mình chỉ có thể hướng dẫn tạo Jenkins bằng Docker.
  • Cảm ơn các bạn đã đọc bài viết của mình!

Nguồn tài liệu tham khảo

https://www.jenkins.io/doc/book/getting-started/

https://docs.docker.com/get-started/

https://about.gitlab.com/topics/ci-cd/

https://youtu.be/pMO26j2OUME?si=Vrgnis4QRzVDziBl

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt server với Apache từ A-Z

I, Cần cài những gì bây giờ. Bạn là 1 newbie, và vào một ngày đẹp trời, bạn nhận 1 request từ "sếp" của bạn: "Tình hình là anh có 1 con server linux, chaỵ ubuntu 20, a cần em cài giúp anh môi trường đ

0 0 17

- vừa được xem lúc

Hỗ trợ xây dựng web bằng Wordpress

WordPress là một hệ thống quản lý nội dung (CMS) miễn phí và mã nguồn mở được phát triển bằng ngôn ngữ lập trình PHP và sử dụng cơ sở dữ liệu MySQL. Nó được sử dụng rộng rãi như một nền tảng để xây dự

0 0 77

- vừa được xem lúc

Một số mẫu hình thường thấy trong phép toán với ma trận ở những mạng neuron nhân tạo

Trước khi đến với bài viết, bạn đọc nên có kiến thức trước đó về một số góc nhìn khác nhau của phép nhân ma trận. Nếu chưa biết hoặc đã quên, bạn có thể tham khảo bài viết này: https://eli.

0 0 19

- vừa được xem lúc

Spring Data Elasticsearch - Tận dụng Elasticsearch trong ứng dụng Spring Boot

Elasticsearch là một hệ thống tìm kiếm và phân tích văn bản mã nguồn mở dựa trên Lucene. Nó được thiết kế để xử lý và tìm kiếm dữ liệu với tốc độ cực kỳ nhanh, giúp bạn tìm thấy thông tin cần thiết từ

0 0 23

- vừa được xem lúc

Bí Quyết Bảo Vệ Mạng: Ngăn Chặn Tấn Công DoS Từ Máy Chủ DHCP

Bạn có thể làm cho máy chủ DHCP không thể cấp địa chỉ IP cho thiết bị khác bằng cách triển khai một kiểu tấn công DoS, được biết đến với tên "tấn công làm cạn kiệt DHCP". Mình sẽ giải thích cho bạn cá

0 0 8