您好,登錄后才能下訂單哦!
環境:win10企業版 + ubuntu 18.04 LTS [WSL]
現在 Docker 有專門的 Win10 專業版系統的安裝包,需要開啟Hyper-V。
開啟 Hyper-V
程序和功能
啟用或關閉Windows功能
選中Hyper-V
最新版 Docker for windows
下載地址: https://docs.docker.com/v17.09/docker-for-windows/install/
點擊 Get Docker for Windows [Stable],并下載 Windows 的版本:
安裝完成后,Docker 會自動啟動。通知欄上會出現個小鯨魚的圖標,這表示 Docker 正在運行。
桌邊也會出現三個圖標,入下圖所示:
我們可以在命令行執行 docker version
來查看版本號,docker run hello-world
來載入測試鏡像測試。
如果沒啟動,你可以在 Windows 搜索 Docker 來啟動:
啟動后,也可以在通知欄上看到小鯨魚圖標:
沒啥問題
leenhem@DESKTOP-7SREO20:~$ sudo apt-get install docker.io Reading package lists... Done Building dependency tree Reading state information... Done docker.io is already the newest version (18.09.7-0ubuntu1~18.04.4). 0 upgraded, 0 newly installed, 0 to remove and 111 not upgraded.
使用 有問題 [無法正常使用]
官網釋疑【解
leenhem@DESKTOP-7SREO20:~$ docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? leenhem@DESKTOP-7SREO20:~$ sudo /etc/init.d/docker status * Docker is not running leenhem@DESKTOP-7SREO20:~$ sudo /etc/init.d/docker start * Starting Docker: docker [ OK ] leenhem@DESKTOP-7SREO20:~$ leenhem@DESKTOP-7SREO20:~$ sudo /etc/init.d/docker status * Docker is running leenhem@DESKTOP-7SREO20:~$ sudo /etc/init.d/docker status * Docker is not running 你會發現這個Docker怎么都啟動不了,那現在怎么辦?一定要先看日志(/var/log/docker.log ) leenhem@DESKTOP-7SREO20:~$ tail /var/log/docker.log -n 100 time="2019-10-22T11:58:25.436968100+08:00" level=info msg="ccResolverWrapper: sending new addresses to cc: [{unix:///var/run/docker/containerd/containerd.sock 0 <nil>}]" module=grpc time="2019-10-22T11:58:25.437359900+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc time="2019-10-22T11:58:25.437703900+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc420769030, CONNECTING" module=grpc time="2019-10-22T11:58:25.438698400+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc420769030, READY" module=grpc time="2019-10-22T11:58:25.559058900+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2" time="2019-10-22T11:58:25.719182400+08:00" level=info msg="Graph migration to content-addressability took 0.00 seconds" time="2019-10-22T11:58:25.719593400+08:00" level=warning msg="Your kernel does not support cgroup memory limit" time="2019-10-22T11:58:25.719660300+08:00" level=warning msg="Unable to find cpu cgroup in mounts" time="2019-10-22T11:58:25.719697200+08:00" level=warning msg="Unable to find blkio cgroup in mounts" time="2019-10-22T11:58:25.719732900+08:00" level=warning msg="Unable to find cpuset cgroup in mounts" time="2019-10-22T11:58:25.719888000+08:00" level=warning msg="mountpoint for pids not found" time="2019-10-22T11:58:25.721991900+08:00" level=info msg="stopping healthcheck following graceful shutdown" module=libcontainerd time="2019-10-22T11:58:25.722045300+08:00" level=info msg="stopping event stream following graceful shutdown" error="context canceled" module=libcontainerd namespace=plugins.moby time="2019-10-22T11:58:25.723869300+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc420769030, TRANSIENT_FAILURE" module=grpc time="2019-10-22T11:58:25.724042800+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc420769030, CONNECTING" module=grpc Error starting daemon: Devices cgroup isn't mounted 初步結論:應該WIN10內核無法完全模擬Linux的cgroup和aufs組件
官網解釋【解決方案】
[Cross Post] WSL Interoperability with Docker
https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly
apt install screenfetch screenfetch 腳本:https://files.cnblogs.com/files/rgqancy/WSL.js,下載后另存為txt
建立中繼
現在安裝Go,我們可以構建繼電器。在下面的命令中,請確保使用您的Windows用戶名替換:
go get -d github.com/jstarks/npiperelay GOOS=windows go build -o /mnt/c/Users/Administrator/go/bin/npiperelay.exe github.com/jstarks/npiperelay
我們現在已經為Windows構建了中繼,但我們希望它可以從WSL內部調用。為此,我們創建一個符號鏈接。確保使用您的Windows用戶名替換:
sudo ln -s /mnt/c/Users/Administrator/go/bin/npiperelay.exe /usr/local/bin/npiperelay.exe
我們將使用socat來幫助啟用中繼。安裝socat,這是一種允許兩點間數據雙向流動的工具(稍后詳細介紹)。抓住這個包裹:
sudo apt install socat
最后一步
隨著socat的安裝和可執行文件的構建,我們只需要將幾件事情串起來。我們將制作一個shell腳本來激活我們的功能。我們將把它放在用戶的主目錄中。去做這個:
#make the file touch ~/docker-relay #add execution privileges chmod +x ~/docker-relay
打開我們用你最喜歡的文本編輯器創建的文件(比如vim)。將其粘貼到文件docker-relay中:
#!/bin/sh exec socat UNIX-LISTEN:/var/run/docker.sock,fork,group=docker,umask=007 EXEC:"npiperelay.exe -ep -s //./pipe/docker_engine",nofork
保存該文件并關閉它。docker-relay腳本將Docker管道配置為允許docker組訪問。要以普通用戶身份運行(不必為每個docker命令附加'sudo'),請將您的WSL用戶添加到docker組。在Ubuntu中:
sudo adduser <your WSL user> docker
測試一下吧!
打開一個新的WSL外殼以確保您的組成員身份被重置。在后臺啟動中繼:
sudo ~/docker-relay &
現在運行docker命令來測試水域。你應該被相同的輸出迎接,就像你從Windows運行命令一樣(并且注意你不需要在命令前加'sudo'!)
注意
要提前啟動docker for windows
使Docker客戶端在WSL下運行以與Docker for Windows通信存在一個基本問題:WSL客戶端通過unix套接字理解IPC,而Docker for Windows通過命名管道理解IPC。這就是socat和npiperelay.exe發揮作用的地方–這是這兩種不相交IPC形式之間的中介。Socat理解如何通過unix套接字進行通信,npiperelay理解如何通過命名管道進行通信。Socat和npiperelay都了解如何通過stdio進行通信,因此它們可以彼此通信。
總結
以上所述是小編給大家介紹的win10子系統ubuntu(WSL) 安裝Docker的教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。