在Windows上的Bash上運行Docker容器

在Windows上從Bash運行Dockerhtml

Docker須要訪問至關多的系統調用,這些調用不必定都是在Windows上實現的,所以在WSL下Docker可能並不那麼容易,相反,我能夠在Windows上運行Docker Engine,並從Bash鏈接到Docker 。linux

1.在Windows上安裝Docker

要在Windows上安裝Docker引擎,只需訪問docker.com並下載相應的發行版(win10下載docker for windows)。此外,請確保已啓用硬件虛擬化並安裝Hyper-V,以避免引擎沒法啓動。docker

1、從Bash運行Windows可執行文件。只需將這兩行添加到您的.bashrc(並從新加載您的環境)ubuntu

export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export PATH="$PATH:/mnt/c/Program\ Files/Docker/Docker/resources/bin"
alias docker=docker.exe
alias docker-compose=docker-compose.exe

你如今能夠docker --version 從Bash 運行windows

2、在WSL上安裝Docker,Ubuntu系統的安裝方法以下bash

# Install packages to allow apt to use a repository over HTTPS
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# Add Docker's official GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Set up the repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Update source lists
sudo apt-get update
# Install Docker
sudo apt-get install docker-ce

如今已經在Windows和WSL上安裝了Docker引擎,但它們都沒有啓動。ssh

windows的docker只要點擊快捷方式啓動,啓動後在PowerShell上執行命令以下:curl

PS C:\> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

WSL上的Docker啓動不了,bash命令以下tcp

$ service docker start
docker: unrecognized service
$ docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

將WSL上的Docker鏈接到Windows上的Docker

docker在另外一臺機器上運行實際上很是簡單,由於Docker公開了CLI能夠附加到的TCP端點。端點使用TLS,這意味着咱們必須在WSL端設置客戶端以識別Windows端Docker機器使用的證書,運行以下命令this

$ export DOCKER_HOST=tcp://192.168.99.100:2376  // your Docker IP
$ export DOCKER_CERT_PATH=/mnt/c/Users/YOUR_USERNAME/.docker/machine/certs
$ export DOCKER_TLS_VERIFY=1

完成後,咱們須要作的就是將Bash下的CLI鏈接到在Windows下運行的引擎,而不是鏈接到在Bash下不能運行的dockers,以下所示:

$ docker -H tcp://0.0.0.0:2376
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

若是不是使用TLS,不使用證書,要公開沒有TLS的守護進程。此步驟是必需的,以便守護程序在TCP端點上進行偵聽。若是你不這樣作,那麼你將沒法從WSL鏈接,因此爲了讓客戶端和docker通訊,必須打開如下黃色背景的選項!操做以下截圖

您可能還想共享您的驅動器(土話:盤符)。這一步不是必須的,但若是須要用到某個盤符的文件,建議勾選對應選項,轉到「共享驅動器(Shared Drives)」設置並啓用它。

將WSL配置爲鏈接到Docker for Windows

執行命令:export DOCKER_HOST=tcp://127.0.0.1:2375

 如今執行docker命令不會再出現如下提示:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

可是,該環境變量只會持續到會話結束。每次打開bash時都必須從新設置它。所以,爲了不這種狀況,您須要在主目錄中的一個名爲.bash_profile或者 .bashrc的文件中設置該變量,

這兩個文件只支持ssh命令終端用vi打開

在FileZilla文件訪問軟件是沒法找到的

打開這兩個文件中有數據的那個並在結尾處添加

保存後從新啓動bash控制檯執行docker相關命令能夠照常執行了。

參考博文:

一、在Linux的Windows子系統上(WSL)使用Docker(Ubuntu)

二、https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/

相關文章
相關標籤/搜索