Tôi đã thực hiện thao tác kéo docker và có thể liệt kê hình ảnh được tải xuống. Tôi muốn xem nội dung của hình ảnh này. Đã tìm kiếm trên mạng nhưng không có câu trả lời thẳng.
Tôi đã thực hiện thao tác kéo docker và có thể liệt kê hình ảnh được tải xuống. Tôi muốn xem nội dung của hình ảnh này. Đã tìm kiếm trên mạng nhưng không có câu trả lời thẳng.
Câu trả lời:
Bạn chỉ có thể chạy một thùng chứa vỏ tương tác bằng hình ảnh đó và khám phá bất kỳ nội dung nào mà hình ảnh đó có.
Ví dụ:
docker run -it image_name sh
Hoặc theo dõi hình ảnh với một entrypoint
docker run -it --entrypoint sh image_name
Hoặc, nếu bạn muốn xem hình ảnh được xây dựng như thế nào, nghĩa là các bước trong nó Dockerfile
, bạn có thể:
docker image history --no-trunc image_name > image_history
Các bước sẽ được đăng nhập vào image_history
tập tin.
docker run -it --entrypoint cmd <image_name>
sẽ hoạt động.
Câu trả lời được chấp nhận ở đây là có vấn đề, bởi vì không có gì đảm bảo rằng một hình ảnh sẽ có bất kỳ loại vỏ tương tác nào. Ví dụ: hình ảnh drone / drone chứa trên một lệnh duy nhất /drone
, và nó có một ENTRYPOINT
là tốt, vì vậy đây sẽ thất bại:
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Và điều này sẽ thất bại:
$ docker run --rm -it --entrypoint sh drone/drone
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sh\": executable file not found in $PATH".
Đây không phải là một cấu hình không phổ biến; nhiều hình ảnh tối thiểu chỉ chứa các nhị phân cần thiết để hỗ trợ dịch vụ đích. May mắn thay, có những cơ chế để khám phá một hệ thống tập tin hình ảnh không phụ thuộc vào nội dung của hình ảnh. Đơn giản nhất có lẽ là docker export
lệnh, sẽ xuất một hệ thống tập tin container dưới dạng lưu trữ tar. Vì vậy, hãy khởi động một container (không thành vấn đề nếu nó thất bại hay không):
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Sau đó sử dụng docker export
để xuất hệ thống tập tin sang tar
:
$ docker export $(docker ps -lq) | tar tf -
Có docker ps -lq
nghĩa là "cho tôi id của container docker gần đây nhất". Bạn có thể thay thế bằng tên hoặc id container rõ ràng.
Bạn không nên bắt đầu một container chỉ để xem nội dung hình ảnh. Chẳng hạn, bạn có thể muốn tìm nội dung độc hại, không chạy nó. Sử dụng "tạo" thay vì "chạy";
docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$
docker export tmp_$$ > image-fs.tar
.
docker export tmp_$$ | tar t
sẽ không hoạt động.
tar
có thể không được cài đặt trên máy của bạn. Hãy thử tar --help
kiểm tra nó.
-o
tham số để chỉ định tệp cần ghi. Ví dụ docker export -o c:\temp\tmp_$$.tar tmp_$$
.
docker save nginx > nginx.tar
tar -xvf nginx.tar
Các tập tin sau đây có mặt:
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
HOẶC LÀ
bạn có thể sử dụng bổ nhào để xem nội dung hình ảnh tương tác với TUI
docker
chỉ cần xem nội dung của, về cơ bản, chỉ là một loại tệp lưu trữ khác.
docker save --output nginx.tar nginx:latest
nếu không, theo tài liệu, nó sẽ chứa "tất cả các lớp cha và tất cả các thẻ + phiên bản"
Để liệt kê nội dung chi tiết của một hình ảnh bạn phải chạy docker run --rm image/name ls -alR
trong đó --rm
có nghĩa là loại bỏ ngay khi thoát ra khỏi một container.
ls
có sẵn và trongPATH
KHAI THÁC HÌNH ẢNH DOCKER !
Tìm hiểu loại vỏ nào trong đó bash
hoặcsh
hay ...
Kiểm tra hình ảnh đầu tiên: docker inspect name-of-container-or-image
Tìm kiếm entrypoint
hoặc cmd
trong sự trở lại json.
Sau đó làm: docker run --rm -it --entrypoint=/bin/bash name-of-image
một khi bên trong làm: ls -lsa
hoặc bất kỳ lệnh shell nào khác như:cd ..
Là -it
viết tắt của tương tác ... và tty. các --rm
viết tắt để loại bỏ container sau khi chạy.
ls
. Hoặc thực sự bất kỳ công cụ phổ biến nào cả.
Chúng ta có thể thử một cách đơn giản hơn như sau:
docker image inspect image_id
Điều này làm việc trong phiên bản Docker:
DockerVersion": "18.05.0-ce"
Với Docker EE cho Windows (17.06.2-ee-6 trên Hyper-V Server 2016), tất cả nội dung của Windows Container có thể được kiểm tra tại C:\ProgramData\docker\windowsfilter\
đường dẫn của HĐH máy chủ.
Không cần gắn đặc biệt.
Tiền tố thư mục có thể được tìm thấy bởi id container từ docker ps -a
đầu ra.
Có một công cụ mã nguồn mở miễn phí có tên là Anchore mà bạn có thể sử dụng để quét hình ảnh container. Lệnh này sẽ cho phép bạn liệt kê tất cả các tệp trong một hình ảnh chứa
nội dung hình ảnh neoore-cli myrepo / app: tập tin mới nhất