Docker - Hộp chứa và Vỏ

Theo mặc định, khi khởi chạy vùng chứa, bạn cũng sẽ sử dụng shell commandtrong khi khởi chạy vùng chứa như hình dưới đây. Đây là những gì chúng ta đã thấy trong các chương trước khi chúng ta làm việc với vùng chứa.

Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng chúng tôi đã đưa ra lệnh sau:

sudo docker run –it centos /bin/bash

Chúng tôi đã sử dụng lệnh này để tạo một vùng chứa mới và sau đó sử dụng lệnh Ctrl + P + Q để thoát ra khỏi vùng chứa. Nó đảm bảo rằng vùng chứa vẫn tồn tại ngay cả sau khi chúng ta thoát ra khỏi vùng chứa.

Chúng tôi có thể xác minh rằng vùng chứa vẫn tồn tại bằng Docker pschỉ huy. Nếu chúng ta phải thoát ra khỏi thùng chứa trực tiếp, thì thùng chứa đó sẽ bị phá hủy.

Giờ đây, có một cách dễ dàng hơn để gắn vào các thùng chứa và thoát ra khỏi chúng một cách sạch sẽ mà không cần phải phá hủy chúng. Một cách để đạt được điều này là sử dụngnsenter chỉ huy.

Trước khi chúng tôi chạy nsenter , trước tiên bạn cần cài đặt nsenterhình ảnh. Nó có thể được thực hiện bằng cách sử dụng lệnh sau:

docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

Trước khi chúng tôi sử dụng nsenter , chúng ta cần lấy ID quy trình của vùng chứa, vì điều này được yêu cầu bởi nsenterchỉ huy. Chúng tôi có thể lấy ID quy trình thông qua Dockerinspect command và lọc nó qua Pid.

Như đã thấy trong ảnh chụp màn hình ở trên, lần đầu tiên chúng tôi sử dụng docker pslệnh để xem các vùng chứa đang chạy. Chúng ta có thể thấy rằng có một vùng chứa đang chạy với ID là ef42a4c5e663.

Sau đó, chúng tôi sử dụng Docker inspect lệnh để kiểm tra cấu hình của vùng chứa này và sau đó sử dụng grepđể chỉ lọc ID quy trình. Và từ đầu ra, chúng ta có thể thấy rằng Process ID là 2978.

Bây giờ chúng tôi đã có ID quy trình, chúng tôi có thể tiếp tục và sử dụng nsenter lệnh để đính kèm vào vùng chứa Docker.

nsenter

Phương pháp này cho phép một người gắn vào một vùng chứa mà không cần thoát ra khỏi vùng chứa.

Cú pháp

Lệnh nsenter –m –u –n –p –i –t containerID

Tùy chọn

  • -u được sử dụng để đề cập đến Uts namespace

  • -m được sử dụng để đề cập đến mount namespace

  • -n được sử dụng để đề cập đến network namespace

  • -p được sử dụng để đề cập đến process namespace

  • -i s để làm cho vùng chứa chạy ở chế độ tương tác.

  • -t được sử dụng để kết nối các luồng I / O của vùng chứa với hệ điều hành chủ.

  • containerID - Đây là ID của vùng chứa.

  • Command - Đây là lệnh chạy bên trong vùng chứa.

Giá trị trả lại

không ai

Thí dụ

sudo nsenter –m –u –n –p –i –t 2978 /bin/bash

Đầu ra

Từ kết quả đầu ra, chúng ta có thể quan sát các điểm sau:

  • Lời nhắc thay đổi đối với bash shell trực tiếp khi chúng tôi phát hành nsenter chỉ huy.

  • Sau đó chúng tôi phát hành exitchỉ huy. Bây giờ bình thường nếu bạn không sử dụngnsenterlệnh, vùng chứa sẽ bị phá hủy. Nhưng bạn sẽ nhận thấy rằng khi chúng tôi chạynsenter lệnh, vùng chứa vẫn hoạt động.