Cách phù hợp để thiết lập môi trường phát triển trên OS X với Docker là gì?


94

Giới thiệu

Tôi không thể tìm ra cách hay để thiết lập môi trường phát triển trên OS X bằng Docker và Boot2Docker. Vấn đề tôi đang gặp phải là làm thế nào để quản lý mã nguồn để:

  1. Tôi có thể sửa đổi mã trên OS X bằng các công cụ (trình soạn thảo văn bản, IDE, git, v.v.) mà tôi đã cài đặt.
  2. Những sửa đổi đó được phản ánh trong vùng chứa Docker, vì vậy nếu tôi chạy lại kiểm tra hoặc làm mới trang web, tôi có thể thấy các thay đổi của mình ngay lập tức.

Về lý thuyết, điều này sẽ dễ dàng thực hiện bằng cách gắn mã nguồn của tôi dưới dạng một tập:

docker run -it -v /path/to/my/source/code:/src some-docker-image

Thật không may, điều này có hai vấn đề lớn khiến nó hoàn toàn không sử dụng được trên OS X:

Sự cố # 1: Ổ đĩa được gắn trên VirtualBox (sử dụng vboxsf) cực kỳ chậm

Ví dụ, đây là khoảng thời gian Jekyll biên dịch trang chủ của tôi nếu mã nguồn là một phần của hình ảnh Docker:

> docker run -it brikis98/yevgeniy-brikman-homepage:v1 bash

root@7aaea30d98a1:/src# time bundle exec jekyll build

[...]

real    0m7.879s
user    0m7.360s
sys     0m0.600s

Đây là hình ảnh Docker giống hệt nhau, ngoại trừ lần này, tôi gắn mã nguồn từ OS X:

> docker run -it -v $(pwd):/src brikis98/yevgeniy-brikman-homepage:v1 bash

root@1521b0b4ce6a:/src# time bundle exec jekyll build

[...]

real    1m14.701s
user    0m9.450s
sys     0m3.410s

Sự cố # 2: Xem tệp bị hỏng

Các cơ chế đồng hồ mặc định trong SBT, Jekyll và grunt sử dụng các công nghệ như inotify, không hoạt động nếu chúng đang chạy trong vùng chứa Docker và các thay đổi được thực hiện trong OS X đối với một thư mục được gắn kết.

Các giải pháp thay thế tôi đã thử

Tôi đã tìm kiếm các giải pháp (bao gồm tất cả các giải pháp trên SO) và thử một vài giải pháp trong số đó, nhưng không tìm thấy giải pháp nào thành công:

  1. Tôi đã chuyển Boot2Docker sang sử dụng NFS , nhưng nó cũng chậm như vậy.
  2. Tôi đã thử Vagrant + NFS và nó cũng chậm như vậy.
  3. Tôi đã thử gắn kết Samba , nhưng thư mục luôn hiển thị trống trong vùng chứa Docker.
  4. Tôi đã cố gắng sử dụng hệ thống tệp Unison , hệ thống này hoạt động trong thời gian ngắn để đồng bộ hóa tệp, nhưng sau đó liên tục hiển thị lỗi kết nối .
  5. Tôi đã bật tính năng bỏ phiếu trong Jekyll , nhưng điều đó làm tăng đáng kể độ trễ cho đến khi các thay đổi của tôi được chọn.
  6. Tôi đã thử Dinghy , một Docker "nhanh hơn, thân thiện hơn trên OS X với Vagrant" và có một số cải tiến. Thay vì biên dịch Jekyll chậm hơn 10-15 lần, nó chậm hơn 2-3 lần. Điều đó tốt hơn, nhưng vẫn không thể sử dụng được.

Có ai đã tìm thấy giải pháp thực sự hoạt động và cho phép bạn phát triển mã hiệu quả với Docker và OS X không?

Cập nhật: một giải pháp cuối cùng!

Cuối cùng tôi đã tìm thấy một giải pháp có vẻ hiệu quả bằng cách sử dụng Boot2Docker + rsync. Tôi đã nắm bắt các chi tiết về cách thiết lập điều này trong câu trả lời của riêng tôi cũng như một dự án mã nguồn mở có tên là docker-osx-dev .


Bạn đã thử trình cài đặt Docker chính thức cho OS X cùng với NFS? AFAIK đây không phải là vấn đề giới hạn đối với Docker trên OS X mà còn là sự phát triển dựa trên Vagrant trên OS X với (các) cơ sở mã lớn hơn ( chúng tôi gặp vấn đề tương tự nhưng với Vagrant ). Tôi thấy NFS là giải pháp khả thi và duy nhất được chấp nhận.
James Mills

@JamesMills: Tôi đã làm theo hướng dẫn chính thức để cài đặt Docker và Boot2Docker. Có hướng dẫn chính thức để thiết lập NFS không? Tôi chỉ tìm thấy chúng trong một ý chính GitHub và sau khi sử dụng chúng, nó có vẻ không nhanh hơn. Bạn đã thiết lập NFS như thế nào?
Yevgeniy Brikman


6
Cách phù hợp để làm việc với Docker là chạy Linux nguyên bản thay vì OS X hoặc thực hiện tất cả công việc phát triển của bạn bên trong máy ảo Linux. Việc tích hợp "boot2docker" là một vụ hack lớn xấu xí không làm gì khác ngoài việc gieo rắc sự nhầm lẫn và thất vọng.
larsks

7
@larsks: Điều đó không hữu ích.
Yevgeniy Brikman

Câu trả lời:


46

Tôi đã quyết định thêm câu trả lời của riêng mình với giải pháp tốt nhất mà tôi đã tìm thấy cho đến nay. Tôi sẽ cập nhật điều này nếu tôi tìm thấy các tùy chọn tốt hơn.

Giải pháp tốt nhất cho đến nay

Giải pháp tốt nhất tôi đã tìm thấy để thiết lập môi trường phát triển hiệu quả với Docker trên OS X là: Boot2Docker + Rsync . Với rsync, thời gian xây dựng trong vùng chứa Docker ngang bằng với việc chạy bản dựng trực tiếp trên OSX! Hơn nữa, mã trình xem tệp không cần thăm dò ( inotifyhoạt động vì rsync sử dụng các thư mục bình thường), do đó, tải lại nóng gần như nhanh chóng.

Có hai cách để thiết lập: cài đặt tự động và cài đặt thủ công.

Cài đặt tự động

Tôi đã đóng gói tất cả các bước để thiết lập Boot2Docker với Rsync thành một dự án mã nguồn mở có tên là docker-osx-dev . Mã này hơi thô, nhưng tôi đã sử dụng thành công trong vài tuần để dễ dàng chuyển đổi giữa 3 dự án với 3 ngăn xếp công nghệ khác nhau. Hãy dùng thử, báo cáo lỗi và gửi một số PR! Ngoài ra, hãy xem bài đăng trên blog của tôi, Môi trường phát triển hiệu quả với Docker trên OS X để biết thêm thông tin.

Thiết lập thủ công

  1. Cài đặt Boot2Docker : brew install boot2docker.
  2. Run Boot2Docker, nhưng với VirtualBox chia sẻ thư mục tàn tật: boot2docker init && boot2docker start --vbox-share=disable.
  3. Chạy boot2docker shellinitvà sao chép các biến môi trường mà nó in ra vào ~/.bash_profiletệp của bạn .
  4. Cài đặt rsync trên máy ảo Boot2Docker : boot2docker ssh "tce-load -wi rsync".
  5. Tạo các thư mục cơ sở bạn cần trên máy ảo Boot2Docker và đặt quyền chính xác cho chúng. Ví dụ: nếu bạn sẽ đồng bộ hóa /foo/barthư mục từ OS X, bạn cần tạo /foo/bartrên máy ảo Boot2Docker : boot2docker ssh "mkdir -p /foo/bar && chown -R docker /foo/bar".
  6. Chạy rsync để đồng bộ hóa các tập tin vào Boot2Docker VM: rsync --archive --rsh="ssh -i $HOME/.ssh/id_boot2docker -o StrictHostKeyChecking=no" /foo/bar docker@dockerhost:/foo. Kiểm tra tài liệu rsync để biết các cài đặt khác nhau mà bạn có thể muốn bật, chẳng hạn như sử dụng --exclude .gitđể loại trừ .gitthư mục khi đồng bộ hóa.
  7. Sử dụng trình xem tệp để giữ cho các tệp được đồng bộ hóa. Ví dụ: bạn có thể sử dụng fswatch ( brew install fswatch) được nối vào rsync.
  8. Tại thời điểm này, bạn sẽ có thể sử dụng docker runđể bắn lên chứa Docker bạn và sử dụng -vlá cờ để gắn kết các thư mục mà bạn đang đồng bộ: docker run -v /foo/bar:/src some-docker-image.
  9. Cập nhật mã trên OS X như bình thường. Các thay đổi sẽ lan truyền rất nhanh khi sử dụng rsync, mã trình xem tệp bình thường sẽ nhận các thay đổi như bình thường (tức là sử dụng inotify) và bản dựng sẽ chạy nhanh vì tất cả các tệp đều là "cục bộ" đối với vùng chứa.
  10. Nếu bạn cần kiểm tra một trang web đang chạy, hãy chạy boot2docker iplệnh để tìm IP của nó.

Cám ơn vì đã chia sẻ! Khi họ nói rsync là "chỉ một chiều", điều đó có nghĩa là tôi không thể sử dụng hệ thống tệp OS X để chia sẻ tệp giữa hai vùng chứa? Ví dụ: vùng chứa 1 xem các tệp nguồn và biên dịch tệp nhị phân, vùng chứa 2 được sử dụng để chạy tệp nhị phân đã biên dịch (sử dụng Haskell trong ví dụ này).
Nicolas Hery

1
@NicolasHery: Tôi hiểu là rsync sẽ sao chép các thay đổi từ OS X sang vùng chứa Docker, nhưng không phải ngược lại. Do đó, mọi tệp được tạo bởi vùng chứa Docker (ví dụ: tệp nhị phân đã biên dịch) sẽ không hiển thị trong OS X. Tuy nhiên, nếu những tệp đó được tạo trong một thư mục được đánh dấu là a VOLUME, thì bạn có thể cấp cho vùng chứa khác quyền truy cập vào ổ đĩa đó bằng cách sử dụng --volumes-fromcờ. Tôi chưa thử điều đó, nhưng tôi nghi ngờ nó sẽ hoạt động.
Yevgeniy Brikman

1
Câu trả lời chính xác. Bạn có thể tạo một trình điều khiển cho docker-machine ( github.com/docker/machine ) thực hiện hầu hết các bản soạn sẵn cho bạn.
dom

1
@dom: Tôi thích ý tưởng đó, nhưng bạn có biết cách tạo trình điều khiển cho docker-machine không? Một yêu cầu kéo vào repo là cách duy nhất hay có thể tạo trình điều khiển từ bên ngoài?
Yevgeniy Brikman

1
Hướng dẫn này có còn hiệu lực cho phiên bản 1.9.1 mới trên Windows không? Tôi có thể sử dụng nó hoặc có thể Docker đã có một giải pháp mới cho "vấn đề" này?

18

Cập nhật : Hiện docker dành cho mac đang ở giai đoạn thử nghiệm với chức năng không hack, việc đi theo lộ trình đó có thể hợp lý hơn rất nhiều cho sự phát triển cục bộ mà không cần đến các bản hack và giải pháp thay thế.

Đừng . Tôi biết đó không phải là câu trả lời mà bạn có thể hy vọng, nhưng hãy đánh giá trung thực chi phí / lợi ích của việc cố gắng lấy mã nguồn cục bộ + thực thi dockerized so với chỉ thực hiện phát triển cục bộ trên OSX.

Tại một số thời điểm, tất cả các vấn đề, nỗ lực thiết lập và các điểm khó khăn trong vận hành CÓ THỂ được giải quyết đủ tốt, nhưng tính đến thời điểm hiện tại thì đây là khoản lỗ ròng.

Sự cố số 1: Ổ đĩa được gắn trên Hộp ảo (sử dụng vboxfs) cực kỳ chậm

Chờ một thời gian và điều này gần như chắc chắn sẽ được cải thiện.

Sự cố # 2: Xem tệp bị hỏng

Tôi không chắc sẽ có bản sửa lỗi cho vấn đề này trong tương lai gần. Nếu loại chức năng này là chìa khóa cho quy trình phát triển của bạn, tôi sẽ coi đây là một công cụ phá vỡ thỏa thuận. Nó không đáng là một nỗ lực R&D lớn khi so sánh với việc chỉ sử dụng rbenv / Bundler để quản lý các cài đặt jekyll / ruby ​​của bạn và chạy chúng cục bộ trên OSX như những người đã làm thành công trong thập kỷ qua.

Cũng giống như "đám mây" không tham gia vào quá trình thiết lập phát triển cục bộ của tôi, hiện tại, docker là một chiến thắng để thử nghiệm / dàn dựng / triển khai và để chạy cơ sở dữ liệu và các thành phần bên thứ ba khác, nhưng các ứng dụng mà tôi đang viết mã thực sự chạy thẳng trên OSX.


1
Tôi thứ hai đó. Chúng tôi phát triển trên OSX và chạy các ứng dụng trực tiếp bên trong hệ thống (với tải lại trực tiếp, v.v.). Sau đó, khi ứng dụng đã hoàn tất, chúng tôi sẽ dày đặc nó để thử nghiệm, dàn dựng và sản xuất.
ÝPaleAle

4
Hm, đó là một chút thất vọng. Tôi luôn có sự ngang bằng trong môi trường dàn dựng / sản xuất của mình. Đó là nhà phát triển luôn luôn là ngoại lệ, vì tôi viết mã trên OS X. Tài liệu Docker chắc chắn làm cho nó có vẻ như đây là một vấn đề đã được giải quyết. Tôi sẽ cố gắng thêm một ngày nữa và xem liệu tôi có thể làm được việc gì không.
Yevgeniy Brikman

Bạn có cảm thấy câu trả lời này vẫn còn giá trị ngày nay không, Peter? Chỉ còn vài tháng nữa thôi, nhưng với dự án của @ Yevgeniy và chỉ có 2 vấn đề hiện đã được khắc phục, có lẽ chi phí / lợi ích bây giờ đã rất lớn! Phải không?
cregox

1
Đó là một điều sở thích cá nhân. Tôi vẫn sẽ không bối rối với điều này vì số lượng dự án mà tôi thực hiện với tư cách là một nhà tư vấn. Nếu tôi là người làm việc toàn thời gian chủ yếu làm việc trên cùng một dự án trong nhiều tuần / tháng, thì việc thiết lập nội dung rsync / fswatch có thể đáng giá.
Peter Lyons

Hộp công cụ Docker là cách phù hợp để sử dụng nó ngày nay vì nếu bạn sử dụng homebrew hoặc trình quản lý gói khác, các phiên bản công cụ docker sẽ không đồng bộ, trừ khi chúng tuân theo phiên bản dưới dạng hộp công cụ docker.
taco

12

Docker cho Mac và Windows sẽ là cách phát triển chắc chắn với Docker trên OS X (và Windows). Một sản phẩm Docker, phần mềm là một “môi trường tích hợp, dễ triển khai để xây dựng, lắp ráp và vận chuyển các ứng dụng từ Mac hoặc Windows.” Nó có mục đích có thể giải quyết các vấn đề do OP trình bày. Từ thông báo ngày 24 tháng 3 năm 2016 :

  • Nhanh hơn và đáng tin cậy hơn: không còn VirtualBox! Công cụ Docker đang chạy trong bản phân phối Alpine Linux trên Máy ảo xhyve trên Mac OS X hoặc trên Hyper-V VM trên Windows và VM đó được quản lý bởi ứng dụng Docker. Bạn không cần docker-machine để chạy Docker cho Mac và Windows.
  • Tích hợp công cụ: Docker for Mac là ứng dụng Mac và Docker for Windows là ứng dụng Windows, bao gồm giao diện người dùng gốc và khả năng tự động cập nhật. Bộ công cụ Docker đi kèm với nó: dòng lệnh Docker, Docker Compose và dòng lệnh Docker Notary.
  • Gắn khối lượng cho mã và dữ liệu của bạn: quyền truy cập dữ liệu khối lượng hoạt động chính xác, bao gồm các thông báo thay đổi tệp (trên Mac inotify hiện hoạt động liền mạch bên trong các vùng chứa cho các thư mục được gắn khối lượng). Điều này cho phép các chu kỳ chỉnh sửa / kiểm tra để phát triển "trong vùng chứa".
  • Dễ dàng truy cập vào các vùng chứa đang chạy trên mạng máy chủ cục bộ: Docker cho Mac và Windows bao gồm một máy chủ DNS cho các vùng chứa và được tích hợp với hệ thống mạng Mac OS X và Windows. Trên máy Mac, Docker có thể được sử dụng ngay cả khi được kết nối với một VPN công ty rất hạn chế.
  • Docker cho Mac đã được kiến ​​trúc từ đầu để có thể phù hợp với mô hình bảo mật hộp cát OS X và chúng tôi đang hợp tác chặt chẽ với Apple để đạt được điều này.

Tôi vừa thấy điều này một ngày nọ và nó có vẻ là giải pháp hứa hẹn nhất cho đến nay. Tôi rất vui mừng được thử một lần sau khi nó ra mắt bản beta và nếu nó hoạt động tốt, tôi sẽ thay đổi nó thành câu trả lời được chấp nhận chính thức.
Yevgeniy Brikman,

4
Đáng tiếc là phiên bản Beta hiện tại (1.11.0-beta7) có vẻ là chỉ chậm như các phương pháp khác để nó có thể mất một thời gian cho đến khi này là khả thi để sử dụng forums.docker.com/t/...
walterra

3

Tuyên bố từ chối trách nhiệm: Tôi có thể thành kiến, vì tôi là tác giả của docker-sync.

Tôi có thể đã thử tất cả các giải pháp có tên ở đây, bao gồm cả một số giải pháp khác (xem phần mềm https://github.com/EugenMayer/docker-sync/wiki/Alternatives-to-docker-sync ), nhưng về cơ bản chúng đều không thành công về phía hiệu suất (hầu hết trong số chúng) hoặc trên docker-machine (hoặc không có) được sử dụng / thực thi.

http://docker-sync.io đã được xây dựng để hợp nhất tất cả các giải pháp và cung cấp các chiến lược tốt nhất (triển khai một số, bạn có thể chọn).

Nó có thể được sử dụng với rsync (đồng bộ 1 chiều) bao gồm các bản sửa lỗi quyền cho người dùng và với unison (đồng bộ 2 chiều). Nó không buộc bạn vào docker-machine hoặc một hypervisor cụ thể, cũng không yêu cầu bạn phải có docker cho Mac. Nó hoạt động với tất cả chúng.

Hiệu suất EugenMayer / docker-sync / wiki / 4.-Hiệu suất không bị ảnh hưởng, giống như bạn không có cổ phiếu nào cả.

docker-sync và các trình theo dõi thay đổi của nó được tối ưu hóa và hoạt động với các dự án có tệp 12k mà ​​không gặp sự cố.

Hãy dùng thử, nếu bạn thích, tôi rất muốn nghe phản hồi!


2

Tôi cảm thấy bạn! Tôi nghĩ rằng tôi đã thử khá nhiều mọi thứ bạn đã thử và tiếc là nó vẫn còn chậm. Sau đó, tôi bắt gặp nhận xét này https://github.com/boot2docker/boot2docker/issues/64#issuecomment-70689254 đề xuất sử dụng Vagrant và Parallels và thay vì Virtualbox. Điều này cho phép tôi sử dụng nfs và tôi đã thực sự thấy một sự thúc đẩy hiệu suất lớn cho dự án của mình (Drupal).

Đây là tệp Vagrant. Tất cả những gì bạn cần làm là cài đặt vagrant, sao chép nó vào một tệp có tên là Vagrantfile và đặt nó vào một thư mục nào đó. Đi tới thư mục đó và chỉ cần thực hiện vagrant upthay vì khởi động boot2docker bình thường của bạn.

Vagrant.configure(2) do |config|
  config.vm.box = "parallels/boot2docker"

  config.vm.network "forwarded_port", guest: 80, host: 80

  config.vm.synced_folder(
    "/Users/dicix/work/www", "/vagrant",
    type: 'nfs',
    nfs_udp: true,
    mount_options: %w[actimeo=2],
    bsd__nfs_options: %w[alldirs maproot=root:wheel]
  )
end

Tôi giả sử điều này yêu cầu cài đặt song song?
Yevgeniy Brikman

2

Tôi cũng đang sử dụng Vagrant với parallels và boot2docker ( https://github.com/Parallels/boot2docker-vagrant-box ). Phát triển chưa bao giờ dễ dàng hơn đối với tôi. Hoạt động thực sự tốt với docker-composevà các thiết lập lớn. Tôi không thực sự cảm thấy sự chậm trễ hoặc tiêu thụ tài nguyên lớn.

Đây là những gì tôi Vagrantfiletrông như thế này:

Vagrant.configure(2) do |config|

  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.box = "parallels/boot2docker"

  config.vm.synced_folder "/Users", "/Users", type: "nfs", mount_options: ["nolock", "vers=3", "udp"], id: "nfs-sync"

end

1

Tôi đã phát triển trong môi trường OS X (Macbook Air giữa năm 2011) + Boot2Docker + Docker-comp trong vài tuần nay. Chưa gặp phải các vấn đề về hiệu suất lớn nhưng tôi tránh chạy bất kỳ loại bản dựng nào khi phát triển (tại sao không sử dụng một cái gì đó như thế jekyll serve --skip-initial-build?). Đây là một docker-compose.ymltệp ví dụ mà tôi đang sử dụng:

docker-compile.yml:

test:
  build: .
  volumes:
    - ./client:/src/client
    - ./server:/src/server
    - ./test:/src/test
  command: nodemon --exec jasmine-node -- test/ --verbose --autotest --captureExceptions --color
  environment:
    - DEBUG=*

Dockerfile:

FROM node:0.12

RUN mkdir -p /src
WORKDIR /src

ENV PATH=/src/node_modules/.bin:$PATH

# We add package.json first so that we the
# image build can use the cache as long as the
# contents of package.json hasn't changed.

COPY package.json /src/
RUN npm install --unsafe-perm

COPY . /src

CMD [ "npm", "start" ]
EXPOSE 3000

Đôi khi tôi sử dụng NFS ( http://syskall.com/using-boot2docker-using-nfs-instead-of-vboxsf/ ) nhưng không nhận thấy sự khác biệt lớn về hiệu suất khi làm như vậy.

Đối với tôi, sự tiện lợi của một cách đơn giản docker-compose up testđể làm cho môi trường của tôi hoạt động đáng giá với hiệu suất (tôi thường xuyên làm việc trên nhiều dự án với các ngăn xếp khác nhau).

PS: nodemonlà một trong số ít trình xem tệp hoạt động với vboxsf (xem https://github.com/remy/nodemon/issues/419 ).


Ngay cả khi tôi bỏ qua quá trình xây dựng ban đầu với Jekyll, mỗi khi tôi thay đổi tệp, nó sẽ phải xây dựng lại, quá trình này vẫn diễn ra theo thứ tự từ 1-3 phút nếu mã nguồn được gắn kết. Điều này khiến bạn không thể thực hiện bất kỳ loại phát triển kiểu thay đổi và tải lại nào.
Yevgeniy Brikman

@YevgeniyBrikman Ồ, tôi không biết điều đó :( Tôi đoán lựa chọn cuối cùng sẽ là để mã của bạn nằm trong máy ảo boot2docker và gắn nó vào máy chủ của bạn bằng sshfs. Nếu không, tôi đoán bạn sẽ phải đợi hiệu suất thư mục được gắn kết tốt hơn để sử dụng docker làm môi trường nhà phát triển.
Olivier Lalonde


-1

Có thể bắt docker hoạt động như một công cụ phát triển. Nhưng nó sẽ đau. Tôi đã ghi lại quá trình ở đây:

http://harmingcola.blogspot.com/2015/05/how-to-setup-docker-as-development-tool.html


Cảm ơn bạn đã đăng bài, nhưng cách này giải quyết vấn đề hiệu suất với ổ đĩa được gắn kết như thế nào?
Yevgeniy Brikman

Ah, xin lỗi, bạn không còn phải sử dụng vBox để gắn kết bất cứ thứ gì. Bạn có thể gắn kết các thư mục thông qua giao diện
docker

-4

Phương pháp này là cách mới nhất (tháng 9 năm 2015) và dễ nhất để thiết lập Docker trên Mac: liên kết tại đây:

Bạn cài đặt Docker bằng đường dẫn Hộp công cụ Docker đến hướng dẫn tại đây:

Đây là một gói thiết lập Docker hoàn chỉnh, bao gồm các công cụ Docker sau:

Docker Machine để chạy hệ nhị phân của docker-machine

Docker Engine để chạy hệ nhị phân docker

Docker Compose để chạy tệp nhị phân docker-compose

Kitematic, Docker GUI, một shell được cấu hình sẵn cho môi trường dòng lệnh Docker

Oracle VM VirtualBox

nhập mô tả hình ảnh ở đây

Có gì trong hộp công cụ:

  • Khách hàng Docker
  • Máy Docker
  • Docker Compose (chỉ dành cho Mac)
  • Docker Kitematic
  • VirtualBox

3
Có nhưng rất tiếc nó không giải quyết được vấn đề được trình bày ban đầu.
Nick
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.