Trong một số trường hợp, điều quan trọng là phải thực hiện gỡ lỗi chuyên sâu hơn cho sự cố trước khi dừng một vùng chứa hoặc hủy một quy trình.
Hãy xem xét việc làm theo danh sách kiểm tra dưới đây:
1) Kiểm tra môi trường soạn docker hiện tại
Chạy docker-compose ps
.
Nếu cổng đang được sử dụng bởi một thùng chứa khác, hãy ngăn chặn docker-compose stop <service-name-in-compose-file>
hoặc loại bỏ cổng đó bằng cách thay thế stop
bằng rm
.
2) Kiểm tra các vùng chứa đang chạy bên ngoài không gian làm việc hiện tại của bạn
Chạy docker ps
để xem danh sách tất cả các vùng chứa đang chạy trong máy chủ của bạn.
Nếu bạn thấy cổng đang được sử dụng bởi một vùng chứa khác, bạn có thể dừng cổng đó lại bằng docker stop <container-id>
.
(*) Vì bạn không thuộc phạm vi của compose
môi trường gốc - trước tiên bạn nên sử dụng tính năng kiểm tra của docker để thu thập thêm thông tin về vùng chứa mà bạn sắp dừng.
3) Kiểm tra xem cổng có được sử dụng bởi các quy trình khác đang chạy trên máy chủ hay không
Ví dụ: nếu cổng là 6379 chạy:
$ sudo netstat -ltnp | grep ':6379'
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 915/redis-server 12
tcp6 0 0 ::1:6379 :::* LISTEN 915/redis-server 12
(*) Bạn cũng có thể sử dụng lệnh lsof chủ yếu được sử dụng để truy xuất thông tin về các tệp được mở bởi các quy trình khác nhau (tôi khuyên bạn nên chạy netstat
trước đó).
Vì vậy, trong trường hợp đầu ra ở trên PID
là 915
. Bây giờ bạn có thể chạy:
$ ps j 915
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 915 915 915 ? -1 Ssl 123 0:11 /usr/bin/redis-server 127.0.0.1:6379
Và xem ID của tiến trình mẹ ( PPID
) và lệnh thực thi.
Bạn cũng có thể chạy: $ pstree -s <PID>
để hiển thị trực quan quá trình và các quá trình liên quan của nó.
Trong trường hợp của chúng tôi, chúng tôi có thể thấy rằng quy trình có thể là một daemon (PPID là 1) - Trong trường hợp đó, hãy xem xét việc chạy:
A) $ cat /proc/<PID>/status
để có được thông tin chuyên sâu hơn về quy trình như số luồng được sinh ra bởi quy trình, khả năng của nó, v.v. '.
B) $ systemctl status <PID>
để xemsystemdđơn vị đã tạo ra một quy trình cụ thể. Nếu dịch vụ không quan trọng - bạn có thể dừng và tắt dịch vụ .
4) dịch vụ Restart Docker
Run: sudo service docker restart
.
5) Bạn đã đạt đến điểm này và ..
Chỉ khi nó không khiến hệ thống của bạn gặp rủi ro - hãy xem xét khởi động lại máy chủ.
sudo netstat -pna | grep 3000
để nhận quy trình đang lắng nghe.