首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)

背景   平时开发大部人都是在提供了高效GUI的window下工作,但是真正部署环境普遍都是在Linux中,所以为了让开发环境和部署环境统一,我们需要在windows模拟LInux环境,以前我们可能通过虚拟机的方式实现...,不过自从微软拥抱开源更加开发提供了Linux的Windows子系统(WSL)后,我们又多了一个选择,通过WSL运行linux程序(WSL比通过虚拟机来运行linux性能更强,耗费资源更小,安装linux...经过几次调整WSL(用于Linux的Windows子系统,也被称为Bash for Windows)可以用于Docker for Windows。...今天在Windows中,当您运行Windows Server容器时,守护进程在Windows中运行。当您切换到Linux容器模式时,守护程序实际上在名为Moby Linux VM的虚拟机内运行。...前提: 打开Hyper-V,并打开cpu虚拟化功能 安装Docker for Windows 安装WSL 配置Docker for Windows 在常规设置中,您需要公开没有TLS的守护进程。

4K20

如何使用适用于Linux 2和Windows Terminal的Windows子系统

在本文中,您将学习如何使用Windows Subsystem for Linux 2在Windows中设置和运行本地Linux shell界面,而无需使用虚拟机。...使用新的Linux子系统Linux版本2(WSL2),访问完整的Linux shell需要一秒或更短的时间。这意味着您现在可以快速地在Windows内部基于Linux的项目上工作。...让我们看一下如何在本地机器中设置一个。 在Windows中安装Ubuntu 首先,您需要运行最新版本的Windows。...Node.js在Windows上运行完全正常。因此,对于Linux用户来说,Windows子系统并没有那么大的好处。...我们来看看如何安装和自定义新的Windows终端。 安装和升级 在安装Windows Terminal之前,请确保在计算机上安装了最新的Windows 10版本。否则,安装将因旧版本而失败。

3.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    linux网络编程中的errno处理

    在Linux网络编程中,errno是一个非常重要的变量。它记录了最近发生的系统调用错误代码。在编写网络应用程序时,合理处理errno可以帮助我们更好地了解程序出现的问题并进行调试。...通常,在Linux网络编程中发生错误时,errno会被设置为一个非零值。因此,在进行系统调用之后,我们应该始终检查errno的值。...在网络编程中,处理网络连接、连接收发数据等经常会涉及到errno的处理。经过查阅了很多资料,发现没有一个系统的讲解,在不同阶段会遇到哪些errno,以及对这些errno需要如何处理。...在connect连接的过程中,可能会遇到以下errno:EINPROGRESS:表示连接正在进行中,需要等待连接完成EALREADY:表示套接字非阻塞模式下连接请求已经发送,但连接还未完成,需要等待连接完成...总结本文介绍了在 Linux 网络编程中处理 errno 的方法。

    5.6K30

    【译】Linux概念架构的理解摘要一、Linux内核在整个计算机系统中的位置二、内核的作用三、Linux内核的整体架构四、高度模块化设计的系统,利于分工合作。五、系统中的数据结构六、子系统架构七、结论

    正是这两个原因使得Linux kernel可以不断进化和改进。 一、Linux内核在整个计算机系统中的位置 ?...swap分区,进入挂起状态。...系统中每个进程的的数据结构task_struct中有一个指针mm指向它的内存映射信息;也有一个指针files指向它打开的文件(用户打开文件表);还有一个指针指向该进程打开的网络套接字。...系统调用接口模块(system calls interface)规定了用户进程可以访问的网络编程API (3)数据表示 每个网络对象都被表示为一个套接字(socket)。...套接字与进程关联的方法和i-nodes节点相同。通过两个task_struct指向同一个套接字,套接字可以被多个进程共享。

    1.1K41

    带你玩转docker容器逃逸

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。...,源于Linux内核的内存子系统在处理写入时拷贝存在竞争条件,允许恶意用户提权获取其他只读内存映射的写访问权限。...2、漏洞验证Linux内核>= 2.6.22(2007年发行,到2016年10月18日才修复)以下是主流发行版修复后的内核版本,如果版本低于以下,说明存在风险(主要是从2007-2016年间的Linux...简单来说就是:docker容器以--net=host 启动会暴露containerd-shim 监听的 Unix 域套接字。特定版本的Containerd未做权限控制,可以实现提权。...是否能获取containerd-shim 监听的 Unix 域套接字:cat /proc/net/unix|grep -a "containerd-shim"3、漏洞利用以--net=host 启动容器直接下载

    2.1K10

    linux内核编程指南_UNIXLINUX

    进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。 如图3.4所示,Linux的进程在几个状态间进行切换。...图3.8 Linux网络体系结构 Linux内核支持的协议栈种类较多,如Internet、UNIX、CAN、NFC、Bluetooth、WiMAX、IrDA等,上层的应用程序统一使用套接字接口。...5.进程间通信 进程间通信支持进程之间的通信,Linux支持进程间的多种通信机制,包含信号量、共享内存、消息队列、管道、UNIX域套接字等,这些机制可协助多个进程、多资源的互斥访问、进程间的同步和消息传递...在实际的Linux应用中,人们更多地趋向于使用UNIX域套接字,而不是System V IPC中的消息队列等机制。Android内核则新增了Binder进程间通信方式。...当一个进程存取的内存映射被换出时,内存管理向虚拟文件系统发出请求,同时,挂起当前正在运行的进程。 除了这些依赖关系外,内核中的所有子系统还要依赖于一些共同的资源。

    2K20

    Linux内核高性能优化

    Linux内核高性能优化 目录 解释 部分子目录 kernel 内核管理相关,进程调度等 sched/fork等 fs 文件子系统 ext4/f2fs/fuse/debugfs/proc等 mm 内存子系统...drivers 设备驱动 staging/cpufreq/gpu等 arch 所有CPU体系结构相关的代码 armm64/x86等 include 头文件 linux/uapi/asm_generic...,挂起请求的最大数量,默认128 net.core.somaxconn = 1024 # 增加Linux自动调整TCP缓冲区限制 net.core.wmem_default = 8388608 net.core.rmem_default....默认1024 net.ipv4.tcp_max_syn_backlog = 8192 # 打开TIME-WAIT套接字重用功能,对于存在大量连接的Web服务器非常有效。...sockets最大数量 net.ipv4.tcp_max_orphans = 262144 # 系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息

    1.3K30

    Debian 9修复18个重要的Linux 4.9 LTS内核安全漏洞

    Debian 项目近日发布了针对 Debian GNU/Linux 9 “ Stretch ” 系列操作系统新的 Linux 内核安全更新,修复了最近发现的几个漏洞 。...根据最新的 DSA 4073-1 Debian 安全通报,在 Debian GNU/Linux 9 “ Stretch ” 操作系统的 Linux 4.9 LTS 内核中,共有 18 个安全漏洞,其中包括信息泄露...通报显示,在 Linux 内核的 DCCP 实现、dvb-usb-lmedm04 驱动程序、hdpvr 媒体驱动程序、扩展 BPF 验证程序、netfilter 子系统、netlink 子系统、xt_osf...模块、USB 核心以及 IPv4 原始套接字实现都存在问题。...另外,Linux 内核的 HMAC 实现、KEYS 子系统、Intel 处理器的 KVM 实现、蓝牙子系统和扩展 BPF 验证器也受到某种影响。

    1.2K40

    爱奇艺网络协程编写高并发应用实践

    ; • 当套接字满⾜可读或可写条件时,事件引擎设置套接字对应的事件状态并返回给调⽤者; • 调⽤者根据套接字的事件状态分别『回调』对应的处理过程; • 对于⼤部分基于 TCP 的⽹络应⽤,数据的读写往往不是...,操作系统负责将多个线程任务唤⼊唤出; 上下⽂切换: 当操作系统需要将某个线程挂起时,会将该线程在 CPU 寄存器中的栈指针、状态字等保存⾄该线程的内存栈中;当操作系统需要唤醒某个被挂起的线程时(重新放置在...在网络协程库中,内部有一个缺省的IO调度协程,其负责处理与网络IO相关的协程调度过程,故称之为IO调度协程: 每⼀个⽹络连接绑定⼀个套接字句柄,该套接字绑定⼀个协程; 当对⽹络套接字进⾏读或写发生阻塞时...,将该套接字添加⾄ IO 调度协程的事件引擎中并设置读写事件,然后将该协程挂起;这样所有处于读写等待状态的⽹络协程都被挂起,且与之关联的⽹络套接字均由 IO 调度协程的事件引擎统⼀监控管理; 当某些⽹络套接字满...当套接字所绑定的协程因IO 可读被唤醒时,假设不取消该套接字的读事件,则该协程被某个线程『拿⾛』后,恰巧该套接字又收到新数据,内核会再次触发事件引擎,协程调度器被唤醒,此时协程调度器也许就不知该如何处理了

    84010

    php基于websocket的那些事儿

    ,php主要就做的就是接受加密key 并返回 其中完成套接字的创建和握手操作 ?...3.2 代码实践 服务端做的流程大致是: 挂起一个socket套接字进程等待连接 有socket连接之后遍历套接字数组 没有握手的进行握手操作,如果已经握手则接收数据解析并写入缓冲区进行输出 下面是示例代码...($this->soc); } 3、挂起进程遍历套接字数组,主要操作都是在这里面完成的 public function run(){ //挂起进程 while(true){...8、踩过的坑,打开调试工作方便查看错误 ①server.php 挂起的进程中可以打印输出的,如果出现问题可以在代码中加入打印来调试 可以在各个判断里面做标记在控制台查看代码运行在哪个区间 不过每次修改完代码之后需要重新运行脚本...1、在与服务器初始套接字的时候发送数据 (在第一次与服务器验证握手的时候不能发送内容) 2、如果已经验证过了但是客户端没有发送或者发送的消息为空也会出现这样的情况 所以要检验已连接的套接字的数据 ?

    87031

    爱奇艺网络协程编写高并发应用实践

    :      每⼀个⽹络连接绑定⼀个套接字句柄,该套接字绑定⼀个协程;      当对⽹络套接字进⾏读或写发生阻塞时,将该套接字添加⾄ IO 调度协程的事件引擎中并设置读写事件,然后将该协程挂起;这样所有处于读写等待状态的...⽹络协程都被挂起,且与之关联的⽹络套接字均由 IO 调度协程的事件引擎统⼀监控管理;      当某些⽹络套接字满⾜可读或可写条件时,IO 调度协程的事件引擎返回这些套接字的状态,IO 调度协程找到与这些套接字绑定的协程对象...⾏合并处理,主要是因为 libfiber 的调度过程是单线程模式的,如果想要在多线程调度器中合并中间态的事件操作则要难很多:在多线程调度过程中,当套接字所绑定的协程因IO 可读被唤醒时,假设不取消该套接字的读事件...,则该协程被某个线程『拿⾛』后,恰巧该套接字又收到新数据,内核会再次触发事件引擎,协程调度器被唤醒,此时协程调度器也许就不知该如何处理了。      ...,该协程进入IO管道读等待状态而被挂起,这并不会影响其所属的线程调度器的正常运行;在 Linux 平台上可以使⽤ eventfd 代替管道,其占⽤资源更少。

    66820

    PHP+WebSocket搭建简易聊天室实践

    代码实践   服务端做的流程大致是:     ①、挂起一个socket套接字进程等待连接     ②、有socket连接之后遍历套接字数组     ③、没有握手的进行握手操作,如果已经握手则接收数据解析并写入缓冲区进行输出...  下面是示例代码(我写的是一个类所以代码是根据函数分段的),文底给出github地址以及自己遇到的一些坑      1、首先是创建套接字 //建立套接字 public function...); $this->socs=array($this->soc); }  3、挂起进程遍历套接字数组,主要操作都是在这里面完成的 public function...挂起的进程中可以打印输出的,如果出现问题可以在代码中加入打印来调试  可以在各个判断里面做标记在控制台查看代码运行在哪个区间 不过每次修改完代码之后需要重新运行脚本 php server.php ②...如果出现这种错误可能是   1、在与服务器初始套接字的时候发送数据 (在第一次与服务器验证握手的时候不能发送内容)   2、如果已经验证过了但是客户端没有发送或者发送的消息为空也会出现这样的情况

    1.2K30

    如何在Windows中运行bash

    Windows10会进行确认,是否安装bash内测版,并在运行Linux子系统之前执行安装程序。 完成这些不怎么愉快的步骤之后,就可以在Windows上面使用Bash了。...不过毕竟是内测版本,还存在很多bug:使用top命令会使整个系统死机,使用apt-get安装emacs会在成功之前挂起一次。但是总体来说,作为早期的测试版本还是比较出色的。...微软承诺将在以后修复这个bug,这样用户就会以用户的权限登录,可以使用sudo命令获取超级用户的权限。 在整合开源生态系统的开发工具方面,微软要做的还有很多。...微软计划将来在Windows上支持更多的shell,这样其他像csh等shell的粉丝也能在Windows上工作了。 有趣的是,倍受欢迎的PowerShell脚本工具或将登录Linux。...这个月在微软的开发者会议上,技术人员Jeffrey Snover暗示了这一点。 很多人强烈要求PowerShell支持Linux,但是因为.NET不支持Linux的原因,这想工作一直没有实现。

    3.8K80

    计算机网络·端口连接和测试笔记

    命令 closed状态的端口 我的理解是防火墙里开启了的但是没有被应用程序使用的端口属于closed. nestat(win/linux)用于测试本地端口开放和使用状况。...ACK] SYN_RECEIVED 正在处于连接的初始同步状态[收到对方的SYN,但还没收到自己发过去的SYN的ACK] ESTABLISHED 连接已建立 CLOSE_WAIT 远程套接字已经关闭:正在等待关闭这个套接字...[被动关闭的一方收到FIN] FIN_WAIT_1 套接字已关闭,正在关闭连接[发送FIN,没有收到ACK也没有收到FIN] CLOSING 套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认[在FIN_WAIT..._1状态下收到被动方的FIN] LAST_ACK 远程套接字已关闭,正在等待本地套接字的关闭确认[被动方在CLOSE_WAIT状态下发送FIN] FIN_WAIT_2 套接字已关闭,正在等待远程套接字关闭...[在FIN_WAIT_1状态下收到发过去FIN对应的ACK] TIME_WAIT 这个套接字已经关闭,正在等待远程套接字的关闭传送[FIN、ACK、FIN、ACK都完毕,这是主动方的最后一个状态,在过了

    1.4K30

    JDK16 正式版发布,网友:别更新了,学不动了~

    3 新工具和库 增加 Unix 域套接字通道 其中 Unix 域 (AF_UNIX) 套接字支持添加到 nio.channels 包中的套接字通道和服务器套接字通道 API 中。...该计划还扩展了继承的通道机制,以支持 Unix 域套接字通道和服务器套接字通道。Unix 域套接字用于同一主机上的进程间通信。...它们在很多方面与 TCP/IP 套接字类似,只是它们由文件系统路径名称而不是 IP 地址和端口号寻址。...新功能的目标是支持 Unix 域套接字通道的所有功能,这些功能在主要 Unix 平台和 Windows 中很常见。 包装工具 提供jpackage工具,用于打包独立的Java应用程序。...OpenJDK 源码迁移到 Github 将 JDK 移植到 Alpine Linux 和其他使用 musl 作为主 C 库的 Linux 发行版 在 x64 和 AArch64 体系结构上,将JDK移植到

    69530

    【系统】使用新的开源工具将你自己的Linux带到Windows

    从Ubuntu(一种Linux操作系统)开始之后,微软已经在Windows子系统Linux版(WSL)Linux运行时环境中增加了许多Linux发行版。...微软的工具提供了Windows和Linux发行版之间的基本联合。其处理告知系统关于分发和执行初始设置(如用户创建)的情况,并且可以自定义,例如,打印分发开始时的消息。...从理论上讲,任何人都可以将自己的选择分发给商店,但微软表示,他们只会接受分销商提供的这类软件包。任何希望在商店里中使用Fedora的用户,都将无法这样做(去年有做出承诺,但目前还没有实现)。...Windows 1803的下一个重大更新将包括对后台任务的有限支持(WSL安装仍然不使用initd或systemd,但至少现在即使在所有WSL窗口关闭的情况下也能保持运行)、Unix域套接字(可用于Windows...和Linux应用程序)以及Windows端和Linux端之间更好的文件系统互操作性。

    1.1K70

    UNIX网络编程学习指南--epoll函数

    而epoll没有这个限制,它所支持的最大FD上限远远大于1024,在1GB内存的机器上是10万左右(具体数据可以再cat /proc/sys/file_max查看); 2、效率的提高 select函数每次都当监听的套接组有事件时就返回...,但却不能讲有事件产生的套接字筛选出来,而是改变其在套接组的标志量,所以每次监听到事件,都需要将套接组整个遍历一遍。...而epoll,每次会将监听套接字中产生时间的套接字加到一列表中,然后我们可以直接对此列表进行操作,而没有产生事件的套接字会被过滤掉,极大地提高了IO效率。...这一点尤其在套接字监听数量巨大而活跃数量少的时候很明显。 epoll的用法 epoll是使用主要在于三个函数。...fd; fd是需要监听的套接字描述符; event是设定监听事件的结构体,数据结构如下: typedef union epoll_data { void *ptr; int fd; uint32

    1.2K80

    解决WARNING: pip is configured with locations that require TLSSSL, however the ss

    结论在本篇博客中,我们介绍了当pip配置需要TLS/SSL,但Python的ssl模块不可用时,如何解决相关的警告信息。...如果依赖包已安装,则直接使用pip安装Django;如果依赖包未安装,则根据当前操作系统的不同,选择不同的安装方法(例如使用apt-get在Linux系统下安装libssl-dev,在Windows系统下使用...SSL模块提供了以下功能:创建SSL/TLS安全套接字,用于在网络上进行加密传输。对SSL/TLS套接字进行身份验证,可以使用证书和其他凭据验证对方身份。...SSL模块可以用于创建SSL/TLS套接字,配置服务器的证书、私钥等信息,并支持在SSL/TLS连接上进行双向认证。...客户端与服务器的加密通信在客户端与服务器之间建立连接时,可以使用SSL模块来创建SSL/TLS套接字,并进行安全的通信。

    3.6K20

    socket rst_socket通信编程

    write方法处崩溃,是因为TCP套接字发送缓冲区的大小为131768字节,在发送前130000个字节的时候发送缓冲区还未满,因此write方法返回成功,接着继续发送 用抓包工具抓包: 假设server...当一个进程向某个已收到RST的套接字执行写操作时,(此时写操作返回EPIPE错误)内核向该进程发送一个SIGPIPE信号,该信号的默认行为是终止进程,因此进程必须捕获它以免不情愿地被终止; 继续修改客户端程序如下...errno = 54 #defineECONNRESET 54/* Connection reset by peer */ 当一个进程向某个已收到RST的套接字执行读操作时,(此时读操作返回ECONNRESET...错误) 抓包信息如下: 上述情况会引发一个问题:服务器主机进程终止或者崩溃后重启,客户端在不write的情况下不会知道,read会返回ECONNRESET错误或者超时; 解决方法用select: 1....; 运行服务端,再运行客户端程序,客户端打印连接成功,if语句开头会休眠20秒,(服务端程序里面,接收一个连接以后就close套接字然后立马退出程序了)在这期间内再次打开服务端,等待客户端的读取数据的分节到达

    1.7K30

    socket阻塞与非阻塞,同步与异步IO模型

    这意味着当调用Windows Sockets API不能立即完成时,线程处于等待状态,直到操作完成。     并不是所有Windows Sockets API以阻塞套接字为参数调用都会发生阻塞。...阻塞模式套接字的不足表现为,在大量建立好的套接字线程之间进行通信时比较困难。...Linux下的函数是:fcntl().     套接字设置为非阻塞模式后,在调用Windows Sockets API函数时,调用函数会立即返回。...需要说明的是并非所有的Windows Sockets API在非阻塞模式下调用,都会返回WSAEWOULDBLOCK错误。例如,以非阻塞模式的套接字为参数调用bind()函数时,就不会返回该错误代码。...使用非阻塞模式套接字,需要编写更多的代码,以便在每个Windows Sockets API函数调用中,对收到的WSAEWOULDBLOCK错误进行处理。

    3.4K10
    领券