云社区 博客 博客详情

Windows 10上使用Hyper-V虚拟机安装docker

chunhan 发表于 2019-12-31 17:17:28 2019-12-31
0
0

【摘要】 使用windows 10的Hyper-V虚拟机来安装docker

在windows上使用Docker大概有三种方式:

  1. Docker desktop for windows

  2. Microsoft store app来安装linux子系统

  3. Hyper-V创建虚拟机来安装docker

以上三种方式,比较推荐使用Hyper-V的虚拟机来安装docker,使用Hyper-V来安装linux虚拟机在操作系统和设置上的坑比较少,以下使用windows 10的Hyper-V虚拟机来安装docker。

首先需要启用windows的Hyper-V管理器:

image.png

在打开Hyper-V管理器创建VM前需要启用Hyper-V相关计算服务,如:

image.png

有时启动服务或在Hyper-V管理虚拟机时会报异常,可以确认如下配置:

Windows安全中心中的:

image.png

image.png

image.png

image.png

完成如上正常打开:

image.png

image.png

可通过原生centos或其他linux iso更改安装源完成操作系统的安装:

image.png

完成linux系统的安装后可通过共享网卡的方式实现虚拟机上网,在网卡设置中设置internet共享:

image.png

通过yum完成docker的安装,docker从公网拉取镜像,可以通过设置docker的proxy:

可参考https://docs.docker.com/config/daemon/systemd/,如下:

  1. Create a systemd drop-in directory for the docker service:

$ sudo mkdir -p /etc/systemd/system/docker.service.d

   2.Create a file called /etc/systemd/system/docker.service.d/http-proxy.conf that adds the HTTP_PROXY environment variable:

[Service]Environment="HTTP_PROXY=http://proxy.example.com:80/"

Or, if you are behind an HTTPS proxy server, create a file called /etc/systemd/system/docker.service.d/https-proxy.conf that adds the HTTPS_PROXY environment variable:

[Service]Environment="HTTPS_PROXY=https://proxy.example.com:443/"

3.If you have internal Docker registries that you need to contact without proxying you can specify them via the NO_PROXY environment variable.

  1. The NO_PROXY variable specifies a string that contains comma-separated values for hosts that should be excluded from proxying. These are the options you can specify to exclude hosts:

    Config examples:

    [Service]    
    Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"

    Or, if you are behind an HTTPS proxy server:

    [Service]    
    Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
  • example.com matches example.com and foo.example.com, and

  • .example.com matches only foo.example.com

  • IP address prefix (1.2.3.4)

  • Domain name, or a special DNS label (*)

  • A domain name matches that name and all subdomains. A domain name with a leading “.” matches subdomains only. For example, given the domains foo.example.com and example.com:

  • A single asterisk (*) indicates that no proxying should be done

  • Literal port numbers are accepted by IP address prefixes (1.2.3.4:80) and domain names (foo.example.com:80)

Flush changes:

$ sudo systemctl daemon-reload

Restart Docker:

$ sudo systemctl restart docker

Verify that the configuration has been loaded:

$ systemctl show --property=Environment dockerEnvironment=HTTP_PROXY=http://proxy.example.com:80/

Or, if you are behind an HTTPS proxy server:

$ systemctl show --property=Environment dockerEnvironment=HTTPS_PROXY=https://proxy.example.com:443/

完成如上正常能从公网拉取镜像等:

image.png

在使用代理时,如果需要创建容器网络,需要避免使用的网段与proxy的网络产生冲突,会导致代理失效。


后续的虚拟机管理可以通过Hyper-V管理器来进行管理:

image.png


image.png

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


登录后可评论,请 登录注册

评论