zoukankan      html  css  js  c++  java
  • 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:UsersAdministrator.dockermachinemachinesdefaultconfig.json配置文件

    无法找到C:UsersAdministrator.dockermachinemachinesdefaultca.pem证书等

    本来是打算在网上搜一个配置文件放进去,可是半天也没有相关的问题,最后发现配置全都在路径C:UsersAdministrator.dockermachinemachinesmh-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/

    本来都打算放弃了,环境配置每次都让人头疼,再坚持一下,总会有办法的,哈哈。
  • 相关阅读:
    uni-app之预加载和取消预加载(仅支持APP和H5)——uni.preloadPage、uni.unPreloadPage
    JavaScript 之数组对象(Array)
    【2019csp模拟】文件列表
    【2019csp模拟】两段子序列
    B. 【普转提七联测 Day 6】载重
    C.【普转提七联测 Day 6】分数
    A. 【普转提七联测 Day 6】石头
    struct和class的区别
    TagHelper中获取当前Url
    为什么要使用 Taghelper (标记助手)
  • 原文地址:https://www.cnblogs.com/xieyang07/p/10682993.html
Copyright © 2011-2022 走看看