您可以在新的 Windows 10 (Ubuntu) bash 使用者空間上本地執行 Docker 嗎?
我的理解是,在其他作業系統上執行 docker 的主要限制是使其成為可能的 Linux 網路容器。(當然適用於 Mac)。
最近,微軟宣布了一個在 Windows 10 上原生執行的Ubuntu linux使用者模式的測試版。這可以在 Windows 上執行以 ELF 格式編譯的二進製文件(與需要編譯的 cygwin 不同。)
我的問題是:你能在新的 Windows 10 (Ubuntu) bash 使用者空間上本地執行 Docker 嗎?
在 Windows 上的 Ubuntu / Debian 上,您可以使用 Docker Desktop for Windows 作為引擎,將 Docker for Linux 作為客戶端。通過 TCP 連接它們。
為 Windows 安裝 Docker 桌面:https ://hub.docker.com/editions/community/docker-ce-desktop-windows 如果你想使用 Windows 容器而不是 Linux 容器,這兩種類型的容器都可以由 Linux docker 客戶端在bash 使用者空間。
從版本 17.03.1-ce-win12 (12058) 開始,您必須選中Expose daemon on tcp://localhost:2375 without TLS以允許 Linux Docker 客戶端繼續通過 TCP 與 Windows Docker 守護程序通信
跟著這些步驟:
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
或者
env DOCKER_HOST=tcp://0.0.0.0:2375 ./docker ps
使其永久化:
mkdir ~/bin mv ~/docker/docker ~/bin
將對應的變數添加到.bashrc
export DOCKER_HOST=tcp://0.0.0.0:2375 export PATH=$PATH:~/bin
當然也可以安裝 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
或者使用 python pip
sudo apt-get install python-pip bash-completion sudo pip install docker-compose
和 Bash 完成。最好的部分:
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
我已經使用 Hyper-V 使用 Docker Desktop 的 2.1.0.1 (37199) 版本對其進行了測試:
$ 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**
卷
添加卷時要小心。該路徑
C:\dir
將/mnt/c/dir
在 WSL 和/c/dir/
docker 引擎上可見。您可以永久克服它:sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"
對 wsl.conf 進行更改後,您必須退出並重新載入 WSL,以便 WSL 在啟動時讀取您的更改。
更新
來自:Windows 10 版本 1803 中命令行的新增功能
Unix 套接字 Windows 不支持 Unix 套接字,現在支持了!您還可以通過 Unix 套接字在 Windows 和 WSL 之間進行通信。這樣做的好處之一是它使 WSL 能夠執行 Linux Docker 客戶端以與在 Windows 上執行的 Docker 守護程序進行互動。
更新
該腳本和 Unix 套接字的使用包含在Pengwin的 pengwin-setup 中。
問候