CẬP NHẬT
Phương pháp dễ nhất: Sử dụng docker exec
Docker phiên bản 1.3 trở lên hỗ trợ lệnh exec
hoạt động tương tự nsenter
. Lệnh này có thể chạy tiến trình mới trong vùng chứa đã chạy (vùng chứa phải có quá trình PID 1 đang chạy). Bạn có thể chạy /bin/bash
để khám phá trạng thái container:
docker exec -t -i mycontainer /bin/bash
xem tài liệu dòng lệnh Docker
Phương pháp thay thế 1
Chụp nhanh
Bạn có thể đánh giá hệ thống tập tin container theo cách này:
# find ID of your running container:
docker ps
# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot
# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash
Bằng cách này, bạn có thể đánh giá hệ thống tập tin của container đang chạy trong thời điểm chính xác. Container vẫn đang chạy, không có thay đổi trong tương lai.
Sau này, bạn có thể xóa ảnh chụp nhanh bằng cách sử dụng (hệ thống tệp của vùng chứa đang chạy không bị ảnh hưởng!):
docker rmi mysnapshot
Phương pháp thay thế 2
ssh
Nếu bạn cần truy cập liên tục, bạn có thể cài đặt sshd vào thùng chứa của mình và chạy daemon sshd:
docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
# you need to find out which port to connect:
docker ps
Bằng cách này, bạn có thể chạy ứng dụng của mình bằng ssh (kết nối và thực hiện những gì bạn muốn).
CẬP NHẬT: Phương pháp thay thế 3
nsenter
Sử dụng nsenter
, xem https://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/
Phiên bản ngắn là: với nsenter, bạn có thể đưa shell vào một container hiện có, ngay cả khi container đó không chạy SSH hoặc bất kỳ loại daemon có mục đích đặc biệt nào
docker exec <container> bash
. Vì vậy, bạn chỉ cần mở một vỏ bên trong container.