Tại sao ifconfig không có sẵn trong Ubuntu Docker container?


64

Với cơ sở ubuntu:12.04, ifconfigkhông có sẵn trong container, mặc dù iplệnh có sẵn, tại sao lại như vậy? và, làm thế nào để có được ifconfigtrong container?



Tôi biết rằng ifconfigbằng cách nào đó không được chấp nhận, nhưng một số chương trình vẫn phụ thuộc vào nó.
Pellaeon

3
Các nhà phát triển vẫn còn sống? Điều này đã bị phản đối từ nhiều năm trước.
Michael Hampton

Có lỗi khi sử dụng iptrong phiên bản hiện tại của phần mềm. Tôi cần một cách giải quyết nhanh chóng của vấn đề.
Pellaeon

1
"Một số chương trình" và "có lỗi": bạn có thể cụ thể hơn không?
Đánh dấu Wagner

Câu trả lời:


95

Bạn có thể cài đặt ifconfig với apt-get install net-tools. (Cụ thể, bằng cách thêm RUN apt-get install -y net-toolsvào Dockerfile của bạn.)

Dựa trên thử nghiệm của tôi, ifconfig được bao gồm trong ubfox: 14.04.


6
Vẫn khiến tôi tự hỏi tại sao nó không được bao gồm theo mặc định, nhưng tôi cho rằng điểm của container này là nó tối thiểu như nó có thể và vẫn hoạt động.
Iguananaut

5
Một phụ lục khác - trên một phiên bản mới của bộ chứa Ubuntu, danh sách gói cũng không được điền, vì vậy bạn phải chạy sudo apt-get updatenếu bạn chưa có.
Iguananaut

1
ifconfigkhông được bao gồm trong ubuntu:16:04.
JamesThomasMoon1979

11
Để trả lời @I Quananaut: Máy ảo Ubuntu có dung lượng 500+ MB, trong khi hình ảnh Ubuntu Docker nhỏ hơn 100 MB. Những người tạo ra các hình ảnh container cần vẽ một đường như những gói / nhị phân nên được bao gồm và những gì không, để chỉ giữ những nhu yếu phẩm cơ bản bên trong. Bạn biết đấy, tất cả những điều này có ý nghĩa hơn nếu bạn nghĩ rằng các container là các quá trình, chứ không phải là một "môi trường điện toán bị cô lập để chơi bên trong và về"
Rushi Agrawal

13

Trừ khi và cho đến khi bạn có thể cài đặt các công cụ mạng, không cần phải cung cấp nó theo mặc định. Ngoài ra nếu bạn muốn xem địa chỉ IP thì có một lệnh khác có sẵn bởi chính docker: -

docker inspect <container_name or container_id>

docker kiểm tra cú pháp:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Cmd này sẽ hiển thị cho bạn mọi chi tiết của container đang chạy bao gồm địa chỉ IP.


4

Tôi cũng vấp phải sự phiền toái này, nhưng như Devendra đã viết trong docker kiểm tra, bạn có thể nhận được tất cả các chi tiết về container mà không cần net-tools. Trong trường hợp của tôi, tôi cần IP của người chứa. Để trích xuất IP, bạn có thể sử dụng:

docker inspect <container-id> \
  | grep "\"IPAddress\"" -m 1 \
  | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'

EDIT thậm chí ký hiệu ngắn hơn để lấy IP của container (xem ví dụ kiểm tra docker ):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>

Tuy nhiên, điều này sẽ không hoạt động bên trong container, như OP yêu cầu.
Gerald Schneider

Bạn đúng. Có vẻ như là một mẹo hữu ích và tôi nghĩ rằng OP rất có thể cũng đang tìm kiếm IP của người chứa.
Tuân thủ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.