Đơn giản các bạn chỉ cần chạy lệnh sau, lưu ý là bạn hãy cài Docker trước nhé. Ở lệnh dưới mình mount thêm một số thư mục của một số ứng dụng cần chạy trong Jenkins, ví dụ như Docker, sshpass,…
1. Sử dụng docker run.
Đầu tiên tạo network riêng cho Jenkins.
docker network create network_cicd
docker run \
--name jenkins \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
-v $(which docker-compose):/usr/local/bin/docker-compose \
-v $(which sshpass):/usr/bin/sshpass \
-v $(which terraform):/usr/bin/terraform \
--restart always \
--network=network_cicd \
jenkins/jenkins:latest
Sử dụng lệnh docker ps để xem container mình đã triển khai. Như vậy chúng ta đã triển khai xong container Jenkins, sử dụng port 8080 để duyệt web
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
178d21ea50a5 jenkins/jenkins:jdk17-preview "/usr/bin/tini -- /u…" 12 hours ago Up 12 second 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp jenkins
– Dùng trình duyệt để login vào trang chủ của Jenkins với url: http:<ip-jenkins>:8080
Dùng lệnh sau để lấy mật khẩu ban đầu nhé
$ docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
621ab01b4db548d29800a7d2da999517
2. Sử dụng docker compose.
Bạn có thể sử dụng file YAML để khai báo các thông tin tương tự như trong lệnh docker run. Ví dụ:
version: "3"
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins:latest
ports:
- "8080:8080"
- "50000:50000"
volumes:
- jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
- /usr/bin/sshpass:/usr/bin/sshpass
- /usr/bin/terraform:/usr/bin/terraform
restart: always
networks:
- network_cicd
volumes:
jenkins_home:
networks:
network_cicd:
Trong file docker-compose.yaml này, ta có một service jenkins được định nghĩa với các thông số tương tự như trong lệnh docker run, bao gồm:
- container_name: tên của container
- image: tên image và phiên bản của Jenkins
- ports: cổng mà container sử dụng
- volumes: các mount point được sử dụng
- restart: chế độ khởi động container khi có lỗi xảy ra
- networks: tên mạng mà container được kết nối
Ngoài ra, ta có định nghĩa volume jenkins_home và network network_name. Sau khi tạo file này, ta có thể sử dụng lệnh sau để chạy container:
docker-compose up -d
Lưu ý, nếu bạn đã có container đang chạy với tên jenkins thì nên dừng và xóa container đó trước khi sử dụng docker-compose up để chạy lại container mới.