win10子系統(tǒng)ubuntu(WSL) 安裝Docker的教程(圖文詳解)
環(huán)境說(shuō)明
環(huán)境:win10企業(yè)版 + ubuntu 18.04 LTS [WSL]
win10安裝Docker for windows
現(xiàn)在 Docker 有專(zhuān)門(mén)的 Win10 專(zhuān)業(yè)版系統(tǒng)的安裝包,需要開(kāi)啟Hyper-V。
開(kāi)啟 Hyper-V
程序和功能
啟用或關(guān)閉Windows功能
選中Hyper-V
安裝Docker for windows
最新版 Docker for windows
下載地址: https://docs.docker.com/v17.09/docker-for-windows/install/
點(diǎn)擊 Get Docker for Windows [Stable],并下載 Windows 的版本:
安裝完成后,Docker 會(huì)自動(dòng)啟動(dòng)。通知欄上會(huì)出現(xiàn)個(gè)小鯨魚(yú)的圖標(biāo),這表示 Docker 正在運(yùn)行。
桌邊也會(huì)出現(xiàn)三個(gè)圖標(biāo),入下圖所示:
我們可以在命令行執(zhí)行 docker version
來(lái)查看版本號(hào),docker run hello-world
來(lái)載入測(cè)試鏡像測(cè)試。
如果沒(méi)啟動(dòng),你可以在 Windows 搜索 Docker 來(lái)啟動(dòng):
啟動(dòng)后,也可以在通知欄上看到小鯨魚(yú)圖標(biāo):
子系統(tǒng)安裝Docker安裝
沒(méi)啥問(wèn)題
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.
使用 有問(wèn)題 [無(wú)法正常使用]
官網(wǎng)釋疑【解
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 你會(huì)發(fā)現(xiàn)這個(gè)Docker怎么都啟動(dòng)不了,那現(xiàn)在怎么辦?一定要先看日志(/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 初步結(jié)論:應(yīng)該WIN10內(nèi)核無(wú)法完全模擬Linux的cgroup和aufs組件
官網(wǎng)解釋【解決方案】
[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
建立中繼
現(xiàn)在安裝Go,我們可以構(gòu)建繼電器。在下面的命令中,請(qǐng)確保使用您的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
我們現(xiàn)在已經(jīng)為Windows構(gòu)建了中繼,但我們希望它可以從WSL內(nèi)部調(diào)用。為此,我們創(chuàng)建一個(gè)符號(hào)鏈接。確保使用您的Windows用戶名替換:
sudo ln -s /mnt/c/Users/Administrator/go/bin/npiperelay.exe /usr/local/bin/npiperelay.exe
我們將使用socat來(lái)幫助啟用中繼。安裝socat,這是一種允許兩點(diǎn)間數(shù)據(jù)雙向流動(dòng)的工具(稍后詳細(xì)介紹)。抓住這個(gè)包裹:
sudo apt install socat
最后一步
隨著socat的安裝和可執(zhí)行文件的構(gòu)建,我們只需要將幾件事情串起來(lái)。我們將制作一個(gè)shell腳本來(lái)激活我們的功能。我們將把它放在用戶的主目錄中。去做這個(gè):
#make the file touch ~/docker-relay #add execution privileges chmod +x ~/docker-relay
打開(kāi)我們用你最喜歡的文本編輯器創(chuàng)建的文件(比如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
保存該文件并關(guān)閉它。docker-relay腳本將Docker管道配置為允許docker組訪問(wèn)。要以普通用戶身份運(yùn)行(不必為每個(gè)docker命令附加'sudo'),請(qǐng)將您的WSL用戶添加到docker組。在Ubuntu中:
sudo adduser <your WSL user> docker
測(cè)試一下吧!
打開(kāi)一個(gè)新的WSL外殼以確保您的組成員身份被重置。在后臺(tái)啟動(dòng)中繼:
sudo ~/docker-relay &
現(xiàn)在運(yùn)行docker命令來(lái)測(cè)試水域。你應(yīng)該被相同的輸出迎接,就像你從Windows運(yùn)行命令一樣(并且注意你不需要在命令前加'sudo'?。?/p>
注意
要提前啟動(dòng)docker for windows
原理圖
使Docker客戶端在WSL下運(yùn)行以與Docker for Windows通信存在一個(gè)基本問(wèn)題:WSL客戶端通過(guò)unix套接字理解IPC,而Docker for Windows通過(guò)命名管道理解IPC。這就是socat和npiperelay.exe發(fā)揮作用的地方–這是這兩種不相交IPC形式之間的中介。Socat理解如何通過(guò)unix套接字進(jìn)行通信,npiperelay理解如何通過(guò)命名管道進(jìn)行通信。Socat和npiperelay都了解如何通過(guò)stdio進(jìn)行通信,因此它們可以彼此通信。
總結(jié)
以上所述是小編給大家介紹的win10子系統(tǒng)ubuntu(WSL) 安裝Docker的教程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
三臺(tái)機(jī)器使用Docker部署Redis集群方式
這篇文章主要介紹了三臺(tái)機(jī)器使用Docker部署Redis集群方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Docker為網(wǎng)絡(luò)bridge模式指定容器ip的方法
Docker在創(chuàng)建容器時(shí)有四種網(wǎng)絡(luò)模式,bridge為默認(rèn)不需要用--net去指定,其他三種模式需要在創(chuàng)建容器時(shí)使用--net去指定。那Docker為網(wǎng)絡(luò)bridge模式指定容器ip該如何實(shí)現(xiàn)呢?下面通過(guò)通過(guò)這篇文章一起看看吧,文中給出了詳細(xì)的示例代碼,有需要的可以參考借鑒。2016-11-11Docker在Windows環(huán)境的搭建和使用詳解
這篇文章主要介紹了Docker在Windows環(huán)境的搭建和使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03如何使用Docker部署Xxl-Job分布式任務(wù)調(diào)度中心
XXL-Job是一個(gè)開(kāi)源的分布式任務(wù)調(diào)度中心,它提供了一個(gè)可視化的任務(wù)管理界面,可以方便地創(chuàng)建、編輯和監(jiān)控任務(wù),本文詳細(xì)的講解了如何使用Docker部署xxl-job分布式任務(wù)調(diào)度服務(wù),感興趣的朋友跟隨小編一起看看吧2024-03-03詳解Docker的持久化存儲(chǔ)和數(shù)據(jù)共享
這篇文章主要介紹了詳解Docker的持久化存儲(chǔ)和數(shù)據(jù)共享,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08CentOS7.6系統(tǒng)下Docker安裝部署教程
這篇文章主要為大家介紹了CentOS7.6系統(tǒng)下Docker的安裝部署教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04Docker搭建簡(jiǎn)單的應(yīng)用棧與容器Hello World訪問(wèn)詳解
這篇文章主要介紹了Docker搭建簡(jiǎn)單的應(yīng)用棧與容器Hello World訪問(wèn),結(jié)合實(shí)例形式詳細(xì)分析了Docker應(yīng)用容器棧的獲取、互聯(lián)、啟動(dòng)、配置以及應(yīng)用訪問(wèn)測(cè)試相關(guān)操作技巧,需要的朋友可以參考下2018-06-06如何讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql語(yǔ)句
這篇文章主要介紹了讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09