Sự hiểu biết của tôi là giới hạn chính của việc chạy docker trên các HĐH khác là các thùng chứa Mạng Linux đã làm được điều đó. (Chắc chắn cho máy Mac).
Gần đây Microsoft đã thông báo bản beta của một bunt linux chế độ người dùng chạy tự nhiên trên Windows 10. Điều này có thể chạy các tệp nhị phân được biên dịch theo định dạng ELF trên Windows (không giống như cygwin đòi hỏi phải biên dịch.)
Câu hỏi của tôi là: Bạn có thể chạy Docker tự nhiên trên không gian người dùng bash Windows 10 (Ubuntu) mới không?
Bạn có thể sử dụng Docker Desktop cho Windows làm công cụ và Docker cho Linux làm máy khách trong WSL trên Ubuntu/Debian trên Windows. Kết nối chúng qua TCP.
Cài đặt Docker Desktop cho Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows Nếu bạn muốn sử dụng Windows Container thay vì Linux Container, cả hai loại container đều có thể được quản lý bởi máy khách docker Linux trong không gian người dùng bash.
Kể từ phiên bản 17.03.1-ce-win12 (12058), bạn phải kiểm tra Hiển thị daemon trên tcp: // localhost: 2375 mà không có TLS để cho phép Docker Linux khách hàng tiếp tục liên lạc với trình nền Windows Docker bằng TCP
Thực hiện theo các bước sau:
cd
wget https://download.docker.com/linux/static/stable/`uname -m`/docker-19.03.1.tgz
tar -xzvf docker-*.tgz
cd docker
./docker -H tcp://0.0.0.0:2375 ps
hoặc là
env DOCKER_Host=tcp://0.0.0.0:2375 ./docker ps
Để làm cho nó vĩnh viễn:
mkdir ~/bin
mv ~/docker/docker ~/bin
Thêm các biến tương ứng vào .bashrc
export DOCKER_Host=tcp://0.0.0.0:2375
export PATH=$PATH:~/bin
Tất nhiên, bạn có thể cài đặt docker-compose
Sudo -i
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Hoặc sử dụng python pip
Sudo apt-get install python-pip bash-completion
Sudo pip install docker-compose
Và Bash hoàn thành. Phần tốt nhất:
Sudo -i
apt-get install bash-completion
curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker > /etc/bash_completion.d/docker
curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
Tôi đã thử nghiệm nó bằng phiên bản 2.1.0.1 (37199) của Docker Desktop bằng Hyper-V:
$ docker version
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89e8a
Built: Thu Jul 25 21:17:37 2019
OS/Arch: linux/AMD64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:17:52 2019
OS/Arch: linux/AMD64
Experimental: false
containerd:
Version: v1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
Look both client and server say **OS/Arch: linux/AMD64**
Tập
Cẩn thận khi thêm khối lượng. Con đường C:\dir
sẽ hiển thị dưới dạng /mnt/c/dir
trên WSL và dưới dạng /c/dir/
bởi động cơ docker. Bạn có thể khắc phục nó vĩnh viễn:
Sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"
Bạn phải thoát và tải lại WSL sau khi thực hiện thay đổi thành wsl.conf để WSL đọc các thay đổi của bạn khi khởi chạy.
[~ # ~] cập nhật [~ # ~]
từ: Có gì mới đối với Dòng lệnh trong Windows 10 phiên bản 18
Ổ cắm Unix Ổ cắm Unix không được hỗ trợ trên Windows, và bây giờ chúng là! Bạn cũng có thể giao tiếp qua các ổ cắm Unix giữa Windows và WSL. Một trong những điều tuyệt vời ở đây là nó cho phép WSL chạy Linux Docker Client để tương tác với Docker Daemon chạy trên Windows.
[~ # ~] cập nhật [~ # ~]
Kịch bản này và việc sử dụng Unix Sockets đã được bao gồm trong Pengwin 'pengwin-setup.
Trân trọng
Tính đến thời điểm hiện tại (tháng 4 năm 2016), câu trả lời là:
Chúng tôi chưa biết (nhưng có lẽ là không).
Vì vậy, câu hỏi là liệu các tòa nhà cao tầng mà Docker cần (cho chroot và không gian tên, trong số những thứ khác) đã được thực hiện hay không. Câu trả lời là có khả năng là "không". Docker yêu cầu chức năng khá tinh vi (và dành riêng cho Linux) để quản lý tài nguyên và quy trình và cách ly quy trình. Mặc dù có thể sao chép tất cả những thứ này trên Windows, nhưng nó sẽ rất nhiều việc và vì mục tiêu của tính năng Windows này dường như là chạy các chương trình không gian người dùng Linux, nên có vẻ như họ không làm hết (và giữ bí mật) .
Tuy nhiên, không có thông tin chính xác nào cả, theo như tôi có thể nói.
Tất nhiên, nếu Microsoft quyết định họ muốn hỗ trợ Docker trong Windows 10, họ có thể sẽ cung cấp nó. Có một số tiền lệ để chuyển Docker sang một kernel khác:
Bản xem trước nội bộ đầu tiên đã được phát hành ngày hôm qua. Tôi đã cố gắng cài đặt docker nhưng không thành công với các điều sau:
Vì vậy, nó sẽ xuất hiện, cho lần xem trước đầu tiên, nó hiện không hoạt động. Tuy nhiên, như nhiều người đã suy đoán, nó có thể hoạt động trong một phiên bản tương lai.
Không, điều này là không thể.
Docker cần nhiều thứ để chạy container:
Đây là tất cả các tính năng kernel được triển khai trong Linux. Thật không may, hầu hết trong số chúng không có tính năng tương tự trong Windows để sử dụng thay thế (cũng không phải trong Hệ thống con Linux mà Microsoft triển khai trong nhân Windows). Tất cả những điều này cần được cung cấp bởi HĐH.
Kể từ Cập nhật của người tạo (được phát hành công khai vào ngày 13 tháng 6 năm 2017), bạn có thể chạy Windows thực thi trực tiếp trong WSL. Điều này có nghĩa là nếu bạn đã cài đặt Docker cho Windows bạn có thể chỉ cần gọi các nhị phân docker
được cài đặt trong C:\Program Files
. Vì chúng kết thúc bằng .exe
, Tùy chọn dễ nhất là tạo bí danh. Một cái gì đó như sau trong .bashrc
Của bạn sẽ hoạt động:
DOCKER_BIN='/mnt/c/Program Files/Docker/Docker/resources/bin'
for f in "$DOCKER_BIN"/*; do
alias "$(basename "$f" | sed 's/.exe$//')"'="'"$f"'"'
done
Điều này tạo bí danh cho tất cả các tệp trong thư mục DOCKER_BIN
:
$ type docker
docker is aliased to `"/mnt/c/Program Files/Docker/Docker/resources/bin/docker.exe"'
$ docker --version
Docker version 17.03.1-ce, build c6d412e
Một cảnh báo: bạn sẽ nhận được thông báo lỗi như " Không thể dịch thư mục làm việc hiện tại " nếu chạy từ thư mục Linux. Chỉ cần cd
vào một thư mục Windows (ví dụ: /mnt/c/Users/YourUsername
) Và bạn sẽ ổn.
Khi Docker 1.12 được phát hành và máy khách Docker Linux được tách ra, bạn sẽ có thể chạy docker client trong Windows 10 bash.
Điều này nghe có vẻ không giống với việc bạn có máy khách Docker Windows nhưng thật hữu ích nếu bạn có các bộ công cụ Linux bao gồm docker cho chức năng phía máy khách.
Trong Windows 10 Phiên bản 1607 Build 1493.10, bạn có thể cài đặt thành công trên Ubuntu Bash, nhưng nó không hoạt động: (
Một "phiên bản docker" đơn giản sẽ cho bạn biết:
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.2.1
Git commit (client): 7c8fca2
OS/Arch (client): linux/AMD64
FATA[0000] Get http:///var/run/docker.sock/v1.18/version: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS?
Nếu sau đó bạn chạy "Sudo docker -d", bạn sẽ gặp lỗi sau:
FATA[0000] ERROR: You are running Linux kernel version 3.4.0+, which is unsupported for running Docker. Please upgrade your kernel to 3.8+.
Vì vậy, đây chắc chắn là một nút chặn từ phía bash.
Tuy nhiên, bạn có thể cài đặt Docker cho Windows và nó hoạt động như một bùa mê, rõ ràng bạn có thể triển khai Máy chủ Linux và mọi thứ bạn cần.
> docker version
Client:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built: Thu Jul 28 21:15:28 2016
OS/Arch: windows/AMD64
Server:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built: Thu Jul 28 21:15:28 2016
OS/Arch: linux/AMD64
Kể từ tháng 9 năm 2016, số.
Tất cả các triển khai hiện tại của Docker trên Windows đều sử dụng ảo hóa, Docker 1.12 sử dụng một trình ảo hóa trong Windows - vì vậy sẽ loại bỏ lợi thế của việc chứa trong quá trình ảo hóa.
Docker cần nhiều hơn là chỉ sử dụng các cuộc gọi hệ thống Linux.
Nó cần các nhóm điều khiển quá trình (cgroups), một hệ thống tập tin có thể xếp chồng (aufs), cộng với các hệ thống dựa trên Linux khác bên ngoài kernel.
Cả nhóm và auf đều không phải là nhân trong Windows 10.
Có một triển khai Windows Server 2016 tại đây: https://msdn.Microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server .. nhưng điều này sẽ chỉ chạy một số dịch vụ Windows, ví dụ: IIS chứ không phải Ubuntu
Docker hiện không hoạt động trong bản dựng hiện tại (14316) - giả sử bạn có thể cài đặt nó.
[email protected]:~# docker --help
runtime: address space conflict: map(0x7ff5ddbb0000) = 0x7ff5ffd20000
fatal error: runtime: address space conflict
Từ: https://blog.docker.com/2016/07/docker-for-mac-and-windows-production- yet /
Faster and more reliable – native development environment using
hypervisors built into each operating system. (No more VirtualBox!)