2017-05-15 68 views
8

Tôi đang cố gắng tạo tập lệnh tiện ích bash để kiểm tra xem trình nền tảng docker có đang chạy trên máy chủ của tôi hay không. Có cách nào tốt hơn để kiểm tra xem trình nền tảng docker có chạy trên máy chủ của tôi không phải là chạy mã như thế này không?Làm cách nào để kiểm tra xem trình nền tảng docker có đang chạy không?

ps -ef | grep docker 
root  1250  1 0 13:28 ?  00:00:04 /usr/bin/dockerd --selinux-enabled 
root  1598 1250 0 13:28 ?  00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc 
root  10997 10916 0 19:47 pts/0 00:00:00 grep --color=auto docker 

Tôi muốn tạo tập lệnh bash shell để kiểm tra xem trình nền của docker có đang chạy hay không. Nếu nó đang chạy sau đó không làm gì, nhưng nếu nó không phải là sau đó có daemon docker bắt đầu.

Mã giả của tôi giống như thế này. Tôi đang nghĩ đến việc phân tích đầu ra của ps -ef của tôi nhưng tôi chỉ muốn biết nếu có một cách hiệu quả hơn để làm giả của tôi.

if (Docker không chạy)

  run docker 

cuối

T.B. Tôi không có chuyên gia về Linux và tôi chỉ cần thực hiện tiện ích này trên môi trường của riêng mình.

Trả lời

4

Bạn có một tiện ích gọi là pgrep trên hầu như tất cả các hệ thống Linux.

Bạn chỉ có thể làm:

pgrep -f docker > /dev/null || echo "starting docker" 

Thay thế 'lệnh echo với Docker bạn lệnh bắt đầu.

0

Một chức năng có thể trông như vậy:

isRunning { 
    `ps -ef | grep "[d]ocker" | awk {'print $2'}` 
} 

Tôi tạo ra một kịch bản để bắt đầu, dừng lại, khởi động lại một MongoDB-server. Bạn chỉ cần thay đổi một số con đường bên trong kịch bản, và tôi cũng làm việc cho bạn: Script

+0

'ps -C docker -opid =' –

1

Bạn cũng có thể chỉ cần kiểm tra cho sự tồn tại của /var/run/docker.pid

1

tôi đã thực hiện một chút Script (Mac OSX) để đảm bảo Docker đang chạy bằng cách kiểm tra mã lối ra của docker stats.

#!/bin/bash 
#Open Docker, only if is not running 
if (! docker stats --no-stream); then 
    # On Mac OS this would be the terminal command to launch Docker 
    open /Applications/Docker.app 
#Wait until Docker daemon is running and has completed initialisation 
while (! docker stats --no-stream); do 
    # Docker takes a few seconds to initialize 
    echo "Waiting for Docker to launch..." 
    sleep 1 
done 
fi 

#Start the Container.. 
Các vấn đề liên quan