win7下docker環境安裝


  最近公司涉及到對docker容器引擎的使用,所以就在網上各種搜索,由於是win7系統,所以在使用上更是麻煩,遇到各種錯誤就是無法成功啟動docker,經過兩天的各種嘗試下,終於安裝成功,在此記錄一下使用過程和遇到的問題。

 

一 、下載Docker安裝包  

  1.系統為win10,max  :https://www.docker.com/get-started

 

  2.系統為其他就版本如win7,win8等就需要下載Docker Toolbox:https://github.com/docker/toolbox/releases

    本人使用的Docker Toolbox是DockerToolbox-18.09.3這個版本:

    鏈接:https://pan.baidu.com/s/1gVLNhlQ5QGKP-vZ-6ER0WQ
    提取碼:dkud 

 

  下載時需要勾選電腦中未安裝的環境,如git,特別是oracle VM VirtualBox(創建虛擬機的必要條件,在win10下則使用系統自帶的hyper-v)等

  

  

安裝完成后有一個 Docker Quickstart Terminal 程序,如果一切就緒直接啟動就可以用了。

二 、docker的使用指南  

  參考官網:https://docs.docker.com/get-started/ 

  下面是對docker run hello-world執行成功的情況。

Docker Quickstart Terminal工具啟動成功

 

 cmd中啟動也成功了

 

 

 oracle VM VirtualBox啟動成功

 

 

 三 、我使用中遇到的問題  

1.未能找到路徑文件問題

無法找到C:\Users\Administrator\.docker\machine\machines\default\config.json配置文件

無法找到C:\Users\Administrator\.docker\machine\machines\default\ca.pem證書等

本來是打算在網上搜一個配置文件放進去,可是半天也沒有相關的問題,最后發現配置全都在路徑C:\Users\Administrator\.docker\machine\machines\mh-keystore下面,果斷將所有配置全部Copy到default中

附上docker 的config.json配置文件和ca.pem證書文件

 

鏈接:https://pan.baidu.com/s/1s6iH66WG5YH78Sp9hyyBOA
提取碼:2h9g 

2.由於網絡配置問題oracle VM VirtualBox無法正常啟動

在設置中找一個可用的網絡

 

3.報錯docker daemon is not running. --未開啟守護進程

嘗試無果:docker-machine env default

在下載DockerToolbox-18.09.3.exe版本重新安裝並解決文件路徑問題后搞定,之前的版本是在官網https://docs.docker.com/toolbox/overview/下載的,並且有max工具


4.Error checking TLS connection: ssh command error: --未找到SSH證書
$ docker-machine env default
Error checking TLS connection: ssh command error:
command : ip addr show
err : exit status 255
output :

嘗試無果:docker-machine regenerate-certs default

在下載DockerToolbox-18.09.3.exe版本重新安裝並解決文件路徑問題后搞定,之前的版本是在官網https://docs.docker.com/toolbox/overview/下載的,並且有max工具

5.關於工具的介紹可以參考官網

https://docs.docker.com/toolbox/toolbox_install_windows/

6.error during connect: Get https://192.168.99.100:2376/v1.37/images/json?all=1: d

ial tcp 192.168.99.100:2376: connectex: A connection attempt failed because the
connected party did not properly respond after a period of time, or established
connection failed because connected host has failed to respond.

是由於虛擬機未開啟,可以直接在Oracle VM VirtualBox開機(前提你要知道那個是默認的虛擬機)、或者直接使用命令  docker-machine.exe restart default  運行默認虛擬機

 

7.其它錯誤

示例錯誤

嘗試連接到計算機(例如docker-machine env default)或從Docker Hub(如同docker run hello-world)中提取圖像時,可能會出錯

您獲得的錯誤可能特定於證書,如下所示:

  Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout

其他人明確建議重新生成證書:

  Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": x509: certificate is valid for 192.168.99.101, not 192.168.99.100
  You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
  Be advised that this will trigger a Docker daemon restart which will stop running containers.

或者,指示網絡超時,如下所示:

  bash-3.2$ docker run hello-world
  Unable to find image 'hello-world:latest' locally
  Pulling repository docker.io/library/hello-world
  Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/hello-world/images. You may want to check your internet connection or if you are behind a proxy.
  bash-3.2$

解決方案

以下是一些快速解決方案,可幫助我們重回正軌。這些示例假設Docker主機是一台名為的機器default

重新生成證書

某些錯誤明確告訴您重新生成證書。您也可以嘗試使用其他與證書和/或連接相關的錯誤。

  $ docker-machine regenerate-certs default
    Regenerate TLS machine certs?  Warning: this is irreversible. (y/n): y
    Regenerating TLS certificates

重新啟動DOCKER主機

$ docker-machine restart default

機器啟動后,為命令窗口設置環境變量。

$ eval $(docker-machine env default)

運行docker-machine ls以驗證計算機是否正在運行,並且此命令窗口已配置為與其通信,如活動計算機的星號(*)所示。

$ docker-machine ls
NAME             ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
default          *        virtualbox     Running   tcp://192.168.99.101:2376           v1.10.1

停止機器,將其移除,然后創建一個新機器。

$ docker-machine stop default
  Stopping "default"...
  Machine "default" was stopped.

$ docker-machine rm default
  About to remove default
  Are you sure? (y/n): y
  Successfully removed default

您可以將該docker-machine create命令與virtualbox驅動程序一起使用來創建一個名為default(或任何您想要的機器名稱)的新機器

$ docker-machine create --driver virtualbox default
  Running pre-create checks...
  (default) Default Boot2Docker ISO is out-of-date, downloading the latest release...
  (default) Latest release for github.com/boot2docker/boot2docker is v1.10.1
  (default) Downloading
  ...
  Docker is up and running!
  To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default

設置命令窗口的環境變量。

$ eval $(docker-machine env default)

運行docker-machine ls以驗證新計算機是否正在運行,並且此命令窗口已配置為與其通信,如活動計算機的星號(*)所示。

HTTP代理和連接錯誤

HTTP代理可能導致特殊品牌的連接錯誤。如果在使用使用HTTP代理(例如公司網絡)的虛擬專用網絡(VPN)的系統上安裝Docker Toolbox,則在客戶端嘗試連接到服務器時可能會遇到錯誤。

以下是此類錯誤的示例:

  $ docker run hello-world
  An error occurred trying to connect: Post https://192.168.99.100:2376/v1.20/containers/create: Forbidden

  $ docker run ubuntu echo "hi"
  An error occurred trying to connect: Post https://192.168.99.100:2376/v1.20/containers/create: Forbidden

在Docker計算機上配置HTTP代理設置

當工具箱創建虛擬機(VM)運行start.sh,這樣會很值HTTP_PROXYHTTPS_PROXYNO_PROXY,並將它們作為create選項來創建的default machine

您可以在已創建的Docker計算機(例如計算機)上為專用網絡重新配置HTTP代理設置default,然后在不同網絡上使用同一系統時更改配置。

或者,您可以通過/var/lib/boot2docker/profileVM內部的配置文件手動修改計算機上的代理設置,或將代理設置配置為docker-machine create命令的一部分

兩種解決方案如下所述。

在DOCKER機器上更新/ VAR / LIB / BOOT2DOCKER / PROFILE

解決此問題的一種方法是更新/var/lib/boot2docker/profile現有計算機上的文件以指定所需的代理設置。

此文件存在於VM本身,因此您需要ssh進入計算機,然后在那里編輯並保存文件。

您可以將計算機地址添加為NO_PROXY設置的,還可以指定您想要使用的代理服務器。通常設置Docker機器URL以NO_PROXY解決此類連接問題,因此此處顯示了示例。

  1. 使用ssh登錄到虛擬機。此示例登錄到 default計算機。
     $ docker-machine ssh default
     docker@default:~$ sudo vi /var/lib/boot2docker/profile
    
  2. NO_PROXY設置添加到文件末尾,類似於以下示例。
     # replace with your office's proxy environment
     export "HTTP_PROXY=http://PROXY:PORT"
     export "HTTPS_PROXY=http://PROXY:PORT"
     # you can add more no_proxy with your environment.
     export "NO_PROXY=192.168.99.*,*.local,169.254/16,*.example.com,192.168.59.*"
    
  3. 重啟Docker。修改profileVM后,重新啟動Docker並注銷計算機。
     docker@default:~$ sudo /etc/init.d/docker restart
     docker@default:~$ exit
    

重試Docker命令。Docker和Kitematic現在都應該正常運行。

當您移動到其他網絡(例如,離開辦公室的公司網絡並返回主頁)時,刪除或注釋掉這些代理設置/var/lib/boot2docker/profile並重新啟動Docker。

使用--ENGINE ENV手動創建計算機以指定代理設置

您可以default使用該docker-machine create命令手動刪除它們並使用該命令手動創建計算機,而不是重新配置自動創建的計算機,而是使用該--engine env標志指定所需的代理設置。

以下是創建default代理設置為http://example.com:8080機器的示例https://example.com:8080,以及N0_PROXY服務器設置example2.com

docker-machine create -d virtualbox \
--engine-env HTTP_PROXY=http://example.com:8080 \
--engine-env HTTPS_PROXY=https://example.com:8080 \
--engine-env NO_PROXY=example2.com \
default

其它錯誤出自官網:https://docs.docker.com/toolbox/faqs/troubleshoot/

本來都打算放棄了,環境配置每次都讓人頭疼,再堅持一下,總會有辦法的,哈哈。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM