Phần 5: Tạo Docker Image với Gitlab runner – Shell Executor

Giới thiệu #

Việc tạo Docker image có lẽ đã không còn quá xa lạ đối với mọi người trong thời buổi hiện nay. Với Docker image, người dùng có thể triển khai phần mềm của mình ở bất cứ nơi đâu, miễn là nơi đó đã được cài đặt Docker. Người dùng có thể sử dụng Gitlab-CI để tự động hóa quá trình tạo và lưu trữ Docker image của mình một cách dễ dàng.

docker image

Để thao tác với Docker trên Gitlab-CI, người dùng có 3 sự lựa chọn như sau:

Trong trường hợp bạn không muốn runner sử dụng chế độ đặc quyền (privileged mode), nhưng vẫn muốn sử dụng cậu lệnh “docker build” thì có thể sử dụng kaniko hoặc buildah.

Các bước thực hiện #

Để sử dụng cách câu lệnh của Docker cho các job “CI/CD”, người dùng có thể cấu hình runner của mình sử dụng “shell executor” trên các server đã được cài đặt Docker và cấp quyền cho “gitlab-runner” có thể sử dụng Docker để tạo Docker image. Các bước chi tiết bao gồm:

  1. Cài đặt Gitlab runner (Ubuntu, Centos, Windows, macOS)
  2. Đăng ký runner với executor là “shell”. Ví dụ:
    sudo gitlab-runner register -n \ 
    --url <Gitlab Domain> \ 
    --registration-token <Token> \ 
    --executor shell \ 
    --description "Tel4vn runner"
  3. Cài đặt Docker trên server
  4. Thêm “gitlab-runner” vào group được sử dụng Docker:
    sudo usermod -aG docker gitlab-runner
  5. Kiểm tra “gitlab-runner” đã có thể sử dụng Docker hay chưa bằng câu lệnh sau:
    sudo -u gitlab-runner -H docker info
  6. Khởi tạo job tạo Docker image trong file “.gitlab-ci.yml”:
    build_image:
      stage: build    // Khai báo job này thuộc stage "build" (có thể xóa nếu muốn)
      before_script:  // Câu lệnh dùng để đăng nhập vào Container Registry trên Gitlab
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
      script: // Tạo và lưu Docker image trên Container Registry
        - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -t $CI_REGISTRY_IMAGE:latest . 
        - docker push $CI_REGISTRY_IMAGE:latest
      after_script:  // Xóa các Docker image đã tạo sau khi đã thực thi các câu lệnh trong "script" (có thể xóa nếu muốn)
        - docker rmi -f $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest

Trong đó:

  • $CI_COMMIT_SHA: mã băm SHA-1 của commit kích hoạt CI/CD job
  • $CI_REGISTRY: Domain của Container Registry trên Gitlab
  • $CI_REGISTRY_IMAGE: Domain của Container Registry của repository/project trên Gitlab
  • $CI_REGISTRY_PASSWORD: mật khật dùng để đăng nhập vào Container Registry của Runner. Giá trị này tương đương với CI_JOB_TOKEN, và có thể sử dụng khi “job” vẫn còn đang xử lý. Nếu như job đã dừng vì bất kỳ lý do nào thì “mật khẩu” này sẽ không còn sử dụng được nữa
  • $CI_REGISTRY_USER: user mặc định của gitlab-runner sử dụng để đăng nhập vào Gitlab Registry

Các giá trị này được lấy từ biến môi trường của Gitlab runner, người dùng có thể thay đổi các thông tin nếu không muốn sử dụng Container registry của Gitlab.

Xem thêm #

 

Nguồn tham khảo: Gitlab

Trung tâm đào tạo Viễn thông và Công nghệ thông tin TEL4VN (TEL4VN) chuyên đào tạo các khóa học về DevOps như: Docker, Kubernetes, Ansible, Jenkins, Linux…….Ngoài ra, TEL4VN còn là Trung tâm đào tạo duy nhất về VoIP mã nguồn mở.

🌐Website: https://tel4vn.edu.vn/
🔗 Fanpage: https://www.facebook.com/tel4vn

🔗 Youtube: TEL4VN

🏠Địa chỉ: 82/2/9 Đinh Bộ Lĩnh, P.26, Q.Bình Thạnh, TP.HCM
☎️SĐT: 028 3622 0868
📩 Email: tuyensinh@tel4vn.com

Powered by BetterDocs

Để lại bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *