2015-11-28 22 views
6

Điều này có thể chung chung hơn và xây dựng hình ảnh cho kiến ​​trúc B với kiến ​​trúc máy A. Tôi hiện đang muốn tạo một hình ảnh với nhiều phụ thuộc Python. Mà mất thời gian trên raspberry-pi nhưng nhanh hơn trên Mac. Khi tôi nhận được một lỗi ở cuối cũng cần phải xây dựng lại. Có cách nào để xây dựng hình ảnh này trên Mac và sau đó kéo nó trên pi mâm xôi của tôi?Docker - Xây dựng hình ảnh rpi trên Mac

Trả lời

8

Thi đua kiến ​​trúc thay thế hoàn toàn thường rất chậm. QEMU là những gì cho phép bạn làm điều này trên Linux và có thể được tích hợp vào một thùng chứa Docker.

Để xây dựng, bạn có thể sử dụng QEMU User Emulation nhanh hơn nhiều so với mô phỏng đầy đủ. Điều này cho phép phần cứng của bạn thực thi các tệp nhị phân ARM trực tiếp và được sử dụng để giảm bớt việc biên dịch chéo và gỡ lỗi chéo.

Đầu tiên get VirtualBoxget Vagrant và cài đặt. (Hoặc sử dụng docker-machine từ Docker Toolbox) Thiết lập

VM của bạn

mkdir raspbian-docker 
cd raspbian-docker 
vagrant init debian/jessie64 
vagrant up 
vagrant ssh 

Bây giờ bạn đang ở trên Debian Linux VM của bạn, thiết lập các máy chủ Docker

sudo su - 
apt-get install qemu-user-static 
curl https://get.docker.com/ | sh 

Chạy một môi trường raspbian

docker run -ti \ 
    --volume /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \ 
    philipz/rpi-raspbian \ 
    bash 

Và làm những gì bạn cần.

Sau đó, bạn có thể docker exportdocker import để di chuyển hình ảnh xung quanh. Bạn cũng có thể sử dụng the hub hoặc setup a registry sử dụng push/pull

Các Docker Toolbox cũng sẽ cho phép bạn dễ dàng chạy Docker qua một VM VirtualBox trên mac nhưng tôi đã chạy vào nhiều rắc rối hơn nó được giá trị (khi bạn đã thiết lập lang thang).

+0

Giải pháp đơn giản và tốt đẹp và hoạt động ... Tôi thích cảm ơn. – Clempat

+0

Tôi cũng khám phá https://www.scaleway.com/. Tôi không thể đăng ký. không có lời mời nhưng trông thú vị để sử dụng cho mục đích này ... – Clempat

0

Bạn có thể chia ngã công cụ phân phối của RPI và tùy chỉnh theo nhu cầu của bạn: https://github.com/RPi-Distro/pi-gen Nó sử dụng qemu-debootstrap trên Docker, tương tự như câu trả lời của Matt.

Nếu bạn dự định xây dựng hình ảnh Docker cho kiến ​​trúc cánh tay, qemu-debootstrap sẽ không giúp ích gì. Trong trường hợp này, bạn có thể chạy Docker xây dựng trực tiếp trên máy chủ ARM, chẳng hạn như máy chủ được cung cấp bởi Scaleway.

Máy chủ CI của tôi chạy kết hợp ở trên, để liên tục xây dựng hình ảnh hệ điều hành với hình ảnh dock armh được tải sẵn. Sau đó, device-init sẽ quan tâm đến việc tải docker xuất khẩu như hình ảnh docker. Nhược điểm là thiết bị-init có thể mất hàng giờ để tải trước hình ảnh docker, sau khi khởi động đầu tiên.

Các vấn đề liên quan