zoukankan      html  css  js  c++  java
  • 在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)

    背景

      平时开发大部人都是在提供了高效GUI的window下工作,但是真正部署环境普遍都是在Linux中,所以为了让开发环境和部署环境统一,我们需要在windows模拟LInux环境,以前我们可能通过虚拟机的方式实现,不过自从微软拥抱开源更加开发提供了Linux的Windows子系统(WSL)后,我们又多了一个选择,通过WSL运行linux程序(WSL比通过虚拟机来运行linux性能更强,耗费资源更小,安装linux环境最大只需要200多M)!经过几次调整WSL(用于Linux的Windows子系统,也被称为Bash for Windows)可以用于Docker for Windows。

      不过令人遗憾的是目前WSL是不支持Docker的守护进程但您可以使用Docker CLI连接到通过Docker for Windows或您创建的任何其他VM 运行的远程Docker守护进程

    概览

     docker的架构设计分为三个组件:一个客户端,一个REST API和一个服务器(守护进程)

    • Client :与REST API交互。主要目的是允许用户连接守护进程。
    • REST API:充当客户端和服务器之间的接口,实现通信。
    • 守护进程:负责实际管理容器 - 启动,停止等。守护进程监听来自docker客户端的API请求。

    守护进程与内核关系非常密切。今天在Windows中,当您运行Windows Server容器时,守护进程在Windows中运行。当您切换到Linux容器模式时,守护程序实际上在名为Moby Linux VM的虚拟机内运行随着Docker 即将发布,您将能够并行运行Windows Server容器和Linux容器,守护进程将始终作为Windows进程运行。

    然而,客户端不必与守护进程安装在同一个地方。例如,您可以在开发计算机上使用本地Docker客户端与Azure中的Docker进行通信。这使我们可以让WSL中的客户端与主机上运行的守护进程通信。

    前提:

    打开Hyper-V,并打开cpu虚拟化功能

    安装Docker for Windows

    安装WSL

    配置Docker for Windows

    在常规设置中,您需要公开没有TLS的守护进程。此步骤是必需的,以便守护程序在TCP端点上进行侦听。如果你不这样做,那么你将无法从WSL连接。

    所以为了让客户端和docker通信,必须打开以下黄色背景的选项!

    您可能还想共享您的驱动器(土话:盘符)。这一步不是必须的,但如果需要用到某个盘符的文件,建议勾选对应选项,转到“共享驱动器(Shared Drives)”设置并启用它。

     配置WSL

    我们需要在WSL上安装Docker客户端

    执行命令:apt installdocker.io

     将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相关命令可以照常执行了

    由于windows10的推出生产力又进一步释放,绝大部分开发人员还是继续会在windows上进行日常开发,但是linux又是普遍公认的服务器部署首选系统,开发人员有必要了解linux的日常使用,并在linux环境下进行测试程序的可靠性,wsl无疑为我们简化了这一过程,告别了使用虚拟机的开销,相信会让开发者更高效的工作

    
    
  • 相关阅读:
    Unicode下CString(wchar_t)转换为 char*
    安装程序制作(转)
    STL头文件
    杭电2043 请大神帮我看看哪错了?谢谢了!
    杭电2046
    杭电2044
    实现winform中的treeview控件部分节点显示checkbox,部分节点不显示checkbox的功能
    实现将sqlserver2000的多张表导出到access,并压缩,并导入压缩的access文件到sqlserver2000
    从Excel中指定的sheet名称或索引读取数据到DataTable,以便用户更改sheet名称后仍能读取数据
    combobox控件实现多列显示
  • 原文地址:https://www.cnblogs.com/xiaoliangge/p/9134585.html
Copyright © 2011-2022 走看看