aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Docker STOPSIGNAL và cách kiểm tra container dừng có trật tự

Suong Nguyen by Suong Nguyen
13/11/2026
in DevOps
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Một container chạy ổn nhưng khi dừng lại không in log dọn dẹp. Để tìm nguyên nhân, hãy xác định tín hiệu mà Docker gửi, tiến trình nào nhận và tiến trình đó xử lý ra sao. Ba câu hỏi này giúp khoanh vùng lỗi trước khi kéo dài thời gian chờ dừng.

Ví dụ và cách đọc

STOPSIGNAL ghi tín hiệu dừng mặc định vào cấu hình image. Docker dùng SIGTERM nếu chưa cấu hình và có thể override riêng khi tạo container. Ví dụ dùng exec form để chạy shell thử trực tiếp, đăng ký trap rồi giữ process sống bằng vòng lặp ngắn. Dùng tag BusyBox 1.37 từ danh mục Official Images đã đối chiếu, chạy thử ở môi trường riêng.

FROM busybox:1.37
STOPSIGNAL SIGTERM
CMD ["sh", "-c", "trap 'echo stopping; exit 0' TERM; while :; do sleep 1; done"]

Kiểm tra kết quả

Trên máy có Docker, build image thử, chạy container với tên riêng, rồi dùng docker stop và đọc log của đúng container đó. Đợi shell đã vào vòng lặp trước khi dừng. Kỳ vọng có dòng stopping khi trap xử lý TERM. Kiểm tra cả trạng thái thoát và log. Mẫu được rà theo tài liệu Dockerfile, chưa build hoặc đo trên daemon trong lượt này.

Áp dụng và giới hạn

Trong ứng dụng thật, xem ENTRYPOINT có thêm shell trung gian hay không và kiểm tra tín hiệu đến được tiến trình cần dọn dẹp. Một service có thể cần ngừng nhận yêu cầu mới trước khi hoàn tất công việc đang chạy. Tách kiểm tra điều đó khỏi việc cấu hình tên tín hiệu. Kiểm tra runtime triển khai vì trình điều phối có thể đặt chính sách dừng riêng. Đừng suy ra hành vi Ctrl+C từ cấu hình STOPSIGNAL.

Tình huống áp dụng

Trước khi thử, tạo một thư mục riêng chỉ chứa Dockerfile và chọn một tên image chưa dùng. Dùng docker image inspect để đọc trường Config.StopSignal của image vừa build. Sau đó kiểm tra container có cấu hình override hay không bằng docker inspect. Ghi hai giá trị đó cạnh kết quả quan sát để tránh đọc nhầm một container chạy từ image cũ.

Với service có lưu dữ liệu, chuẩn bị bài thử có một công việc ngắn đang chạy và một dấu hiệu hoàn tất có thể quan sát được. Kiểm tra thời điểm nhận yêu cầu dừng, thời điểm ngừng nhận việc mới và kết quả của công việc còn lại. Nếu có nhiều tiến trình, xác định tiến trình nào ghi log và tiến trình nào phải chờ. Đừng tăng thời gian chờ chỉ vì log thiếu một dòng. Xác nhận trước rằng phiên bản triển khai nhận đúng tín hiệu và trình tự dọn dẹp thật sự được gọi.

Nguồn tham khảo

  • Tài liệu chính thức 1
  • Tài liệu chính thức 2

Tags: ContainerDockerVận hành
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Docker WORKDIR tương đối: khi base image đổi, lệnh chạy ở đâu?

by Suong Nguyen
12/11/2026
0

Đọc đường dẫn làm việc của từng stage và khóa điểm bắt đầu bằng WORKDIR tuyệt đối.

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

GitHub Actions: working-directory cho từng step và vì sao cd không được giữ

by Suong Nguyen
11/11/2026
0

Tổ chức working-directory trong workflow nhiều thư mục, kiểm tra đường dẫn và tránh hiểu nhầm cd sẽ tồn tại sang step sau.

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

GitHub Actions matrix: fail-fast false giữ các lượt kiểm tra, không bỏ qua lỗi

by Suong Nguyen
10/11/2026
0

Tách việc hủy các job còn lại trong matrix khỏi việc cho phép một job lỗi, với workflow ba shard và script có kết quả kiểm tra rõ...

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Bash wrapper: dùng “$@” để giữ nguyên từng đối số khi gọi lệnh

by Suong Nguyen
09/11/2026
0

Kiểm tra wrapper Bash với đường dẫn có khoảng trắng, chuỗi rỗng và ký tự sao để thấy khác biệt giữa "$@", "$*" và $@ không quote.

Next Post
Minh họa phát triển ứng dụng mobile đa nền tảng với Flutter

Flutter AbsorbPointer khi lớp phủ cần chặn nút bên dưới

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native Alert trên Android và hai đường hủy hộp thoại
  • Map.set có đưa khóa đã tồn tại xuống cuối không?
  • Android postInvalidate khi custom View cần lên lịch vẽ lại

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply