Trong phiên bản hiện tại của boot2docker (1.3.1), bạn có thể làm điều này bằng cách chỉ cần gắn một ổ đĩa vào container, ví dụ:
$ docker run -it -v /var/run/docker.sock:/home/docker.sock myimage bash
[ [email protected]:~ ]$ ls /home
docker.sock
Docker = require('dockerode')
docker = new Docker(socketPath: "/home/docker.sock")
// should work!
IMHO này là đơn giản và rõ ràng hơn so với rối tung xung quanh với cổng chuyển tiếp VirtualBox
Điều này thực sự giống như cách hầu hết các ví dụ về việc sử dụng trình khách API Docker được đặt ra, nghĩa là "chỉ cần gắn đế cắm vào bộ chứa dưới dạng ổ đĩa".
Có lẽ giống như tôi bạn nghĩ do cách boot2docker hoạt động, điều này sẽ không thể thực hiện được. Xét cho cùng, có vẻ như các phiên bản gần đây được thiết lập để chia sẻ khối lượng từ máy chủ OS X của bạn chứ không phải vm boot2docker, đó là những gì bạn muốn hầu hết thời gian. Nhưng không có đường dẫn /var/run/docker.sock
trên máy chủ OS X của bạn, vậy điều gì đang xảy ra?
Điều thực sự xảy ra là thư mục /Users
được gắn từ máy chủ của bạn vào vm boot2docker. Khi bạn thêm một ổ đĩa vào một thùng chứa dưới boot2docker nó vẫn còn chia sẻ bất cứ điều gì là tại đường dẫn trong vm ... nó chỉ xảy ra rằng bất kỳ đường dẫn dưới /Users
trong vm được gắn kết từ máy chủ. Nhưng bất kỳ đường dẫn nào bên ngoài /Users
sẽ đến từ chính vm boot2docker chứ không phải máy chủ lưu trữ của bạn.
tức là
$ boot2docker ssh
[email protected]:~$ ls /var/run
acpid.pid acpid.socket docker.pid docker.sock sshd.pid udhcpc.eth0.pid udhcpc.eth1.pid utmp
Có file socket Docker của chúng tôi, và vì nó nằm ngoài thư mục /Users
chúng tôi có thể liên kết con đường đó vào container của chúng tôi như một khối lượng.
(Đối với một số lý do này không hoạt động:
$ docker run -it -v /var/run/docker.sock
... các tập tin ổ cắm đi ra như một thư mục /var/run/docker.sock/
trong bao bì của chúng tôi - có vẻ như một lỗi Docker.)
Chúng tôi có để sử dụng mẫu thư đại tràng được tách biệt:
$ docker run -it -v /var/run/docker.sock:/home/docker.sock
Cảm ơn Bryan. Một thứ khác mà tôi đang cố gắng tìm ra là cách sử dụng curl để nói chuyện với API docker. Bạn có một số con trỏ? – akshayl
yêu cầu tốt nhất là câu hỏi riêng. – Bryan