首页 > 编程知识 正文

docker exec 进入容器,docker安装linux

时间:2023-05-06 16:36:09 阅读:17217 作者:2189

容器与镜像的差异镜像可以理解为构建时(build-time )结构,容器可以理解为运行时(runtime )结构。

容器与虚拟机的区别虚拟机与容器的最大区别在于容器更快更轻。 与虚拟机在完整的操作系统上运行相比,——的容器共享主机的操作系统/内核。

容器和虚拟机都可以依赖于宿主机运行。 主机可以是笔记本电脑、数据中心物理服务器或公共云实例。

以下示例假设宿主机是需要运行四个业务APP应用程序的物理服务器。

虚拟机—必须创建四个虚拟机,安装四个操作系统,以及安装四个APP应用程序。

虚拟机模型将底层硬件资源划分为虚拟机。 每个虚拟机都是包含虚拟CPU、虚拟RAM和虚拟磁盘等资源的软件结构。 因此,每个虚拟机都需要自己的操作系统来声明、初始化和管理这些虚拟资源。

但是,操作系统本身有额外的开销。 例如,每个操作系统占用一点CPU、RAM、存储容量等。 每个操作系统都需要单独的许可证,需要修补和升级,每个操作系统也面临攻击风险。

容器:服务器启动时,选定的操作系统将启动。 在Docker世界中,可以选择Linux,也可以选择内核支持内核中容器基元的新版本的Windows

容器模型具有在宿主机操作系统上运行的单个内核。 ——容器可以在一台主机上运行几十个到几百个容器,它们共享一个操作系统/内核。

也就是说,只有一个操作系统需要CPU、RAM和存储资源,只有一个操作系统需要许可证,只有一个操作系统需要升级和修补。 同时,只有一个操作系统面临被攻击的风险。 简而言之,只有一个操作系统丢失。

启动容器docker container run#格式:容器dockercontainerrun [ option ] [ repository ] : [ tag ] # option-it #当前终端:[容器端口,当通信访问docker主机端口时,通信将映射到容器中的端口。 #示例: dockercontainerrun-it Ubuntu :16.04仔细查看上述命令的输出内容时,您会注意到每个实例的提示都发生了变化。 这是因为-it参数将shell切换到容器终端——。 现在在集装箱内部。 其中-it参数指示Docker打开容器交互模式并将读者的当前shell连接到容器终端。 然后,用户指示Docker希望基于ubuntu:latest镜像启动容器。

通过按Ctrl-PQ退出容器,可以在保持容器行为的同时再次退出容器

可以看到,查看运行状态的容器docker container ls在输出中显示了刚刚运行的ubuntu容器

正在运行的容器#格式docker container exec [opt] [容器名称/id ] [ arg . ] #示例: dockercontainerexec-it strange _ boumanbash

停止运行容器的docker container stop [容器名称ID]#示例: dockercontainerstopstrange _ boumandockercontainerstop9DC 53040 fa41容器示例: dockercontainerrmstrange _ boum an注意:要删除容器,只删除未运行的容器,而不删除正在运行的容器。

您可以使用docker container ls -a检查在窗口S10中访问wsl2的docker容器是否成功删除。 以Nigel poulton/pluralsight-docker-ci为例。

1、首先在wsl的linux环境中启动容器,然后使用-p将docker所在的宿主机(wsl中的linux )容器$ dockercontainerrun-d-- name web server-p 80336666 映射到pluralsight-docker-ciunabletofindimage ' Nigel poulton/pluralsight-docker-ci : latest ' locally latest 3360 pullingfrring pluralsight-docker-ci 729 ec3 a6 ada : pulll completef 03 6: pullcompletef 78e ec3 D1 F8 DC : BD 2f 073360 pull complete 22835 c 51693 f : pullcompletedigest 3360 sha 256336061 BC 64850 a5 F2 bfb

c65967cc33feaae8a77c8b49379c55aaf05bb02dcee41451Status: Downloaded newer image for nigelpoulton/pluralsight-docker-ci:latest049b6ee85436549b11d457cf2903e2262067bd7ba5e5499c5ba9840fcdc9cf8d 2、通过命令docker container ls查看当前运行的容器以及端口映射情况 $ docker container lsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES049b6ee85436 nigelpoulton/pluralsight-docker-ci "/细腻的康乃馨/sh -c 'cd /src…" 29 minutes ago Up 29 minutes 0.0.0.0:80->8080/tcp, :::80->8080/tcp webserver 3、建立win10和wsl中的linux的端口映射关系
上述步骤只能在wsl中访问容器的8080端口,你可以通过 ifconfig 查看docker的ip,然后通过curl docker-ip即可看到服务的返回。但是直接在win10的浏览器上访问还是不行,因此需要建立映射。
以管理员身份打开powershell netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8077 connectaddress=<wsl中的linux的eth0的ip> connectport=<wsl中linux映射的端口>#例如:上面我是用wsl的ubuntu中的80端口映射到了容器的8080端口,所以我这边的connectport要填80,172.19.115.157是我ubuntu的eth0的ipnetsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8077 connectaddress=172.19.115.157 connectport=80 4、建立映射后可以查看 netsh interface portproxy show all侦听 ipv4: 连接到 ipv4:地址 端口 地址 端口--------------- ---------- --------------- ----------0.0.0.0 50051 172.25.16.145 500510.0.0.0 8077 172.19.115.157 80 5、现在就可以通过win10本机的8077端口访问到容器的8080端口了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。