当前位置:首页 > 数码 > Docker镜像-容器的交互及外部代码口头原理与通常 (docker logs)

Docker镜像-容器的交互及外部代码口头原理与通常 (docker logs)

admin7个月前 (04-14)数码61

作为一种盛行的容器技术,曾经成为现代运行程序开发和部署的关键工具。在Docker中,镜像是构建和运转容器的基础,而容器则是基于镜像创立的可口头实例。

Docker镜像与容器的交互

创立容器:首先,咱们须要经常使用Docker镜像创立一个容器。经过经常使用Docker命令行或DockerAPI,咱们可以指定所需的镜像和容器性能选项来创立容器。例如,经常使用以下命令创立一个名为"mycontner"的容器:

dockercreate--namemycontainermyimage

启动容器:一旦容器创立成功,咱们可以经常使用以下命令来启动它:

dockerstartmycontainer

进入容器:要与容器启动交互,咱们可以经常使用以下命令进入容器的命令行界面:

dockerexec-itmycontainerbash

经过这个命令,咱们可以在容器外部口头命令,检查容器的文件系统,修正性能文件等。

与容器通讯:Docker容器可以经过各种方式与外部环境启动通讯。例如,咱们可以将容器的端口映射到主机上的端口,使得容器内的运行程序可以经过网络访问。此外,Docker还支持网络衔接、共享文件卷等性能,以便容器与其余容器或主机之间启动通讯和数据共享。

在容器外部口头代码的原理与通常

命令行交互:在容器外部口头代码最便捷的方式是经过命令行交互。经过进入容器的命令行界面,咱们可以在容器外部口头各种命令。例如,在容器内运转一个/target=_blankclass=infotextkey>Python脚本:

logspythonscript.py

智能化脚本:假设咱们须要在容器启动时智能口头一些代码,可以将这些代码写入一个启动脚本,并在Dockerfile中指定该脚本的口头门路。例如,在Dockerfile中参与以下指令:

COPYstartup.sh/root/CMD["/bin/bash","/root/startup.sh"]

这样,每次启动容器时,Docker会智能口头startup.sh脚本。

容器化运行程序:关于复杂的运行程序,咱们可以将其容器化,行将运行程序及其依赖项打包为一个镜像,并在容器外部运转。容器化运行程序可以经过Dockerfile定义构建环节,并经过各种性能和环境变量来控制其行为。例如,以下是一个便捷的Dockerfile示例:

FROMpython:3.9COPY./WORKDIR/appRUNpipinstall-rrequirements.txtCMD["python","app.py"]

这个Dockerfile经常使用Python3.9作为基础镜像,将以后目录下的文件复制到容器的/app目录,并在容器外部装置所需的Python依赖项。最后,它经过口头app.py启动运行程序。

容器编排:关于复杂的运行程序,通常须要多个容器协同上班。这时,咱们可以经常使用容器编排工具(如DockerCompose或Kubees)来治理和编排多个容器。容器编排工具准许咱们定义多个容器之间的依赖相关、网络衔接和资源调配等,并提供智能化的部署和裁减性能。

Docker镜像与容器之间的交互是经过创立和启动容器来成功的。咱们可以经常使用命令行交互、智能化脚本和容器化运行程序等方式,在容器外部口头代码。经过正当应用Docker的性能和工具,咱们可以轻松地构建、治理和裁减运行程序的容器化环境,从而成功更高效、灵敏和牢靠的运行程序开发和部署。


理解了镜像和容器,你就掌握了Docker的80%

Namespaces: 做隔离pid、net、ipc、mnt、uts

Control groups: 做资源限制

Union file systems: Container和image的分层

Build from Dockerfile

Docker提供一个配置文件Dockerfile,就好比之前博主使用Vagrant工具时的Vagrantfile文件一样,通过Dockerfile文件就可以去定义一个docker image镜像,build这个dockerfile文件就可以构建出一个image镜像

Pull from Registry

类似github 仓库,可以git clone拉取仓库的文件,也可以将文件push到仓库中,那么docker pull则是在docker hub上去拉取你要的镜像

三、Container(容器)

说明:上一步在容器中安装了vim并退出了容器,那么在已退出的容器中可以看到该容器,现在则需要将这个容器commit成一个镜像,这个镜像是基于centos8基础镜像的,但是跟centos8基础基础镜像不一样的是它安装了vim

以上创建image的方式不提倡使用,因为如果发布该image,用户拿到该image是不知道该image是如何构建的,并且这种方式构建image很有可能把不安全的东西放到image里面发布出去,即该image肯定是不安全的

通过dockerfile构建镜像和commit容器生成的镜像差不多,但建议使用dockerfile构建image,这样的话只需要分享dockerfile这个文件给别人就可以了,别人通过你分享的dockerfile文件就能构建出跟你一样的image

最后我也整理了一些软件测试学习资料,对于学软件测试的小伙伴来说应该会很有帮助,为了更好地整理每个模块

需要的私信我关键字【555】免费获取哦 注意关键字是:555

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

全套软件测试自动化测试大厂面经

DOCKER 总结

Docker 是一个开源的 应用容器引擎 ,让 开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化 。容器是完全使用沙箱机制,相互之间不会有任何接口。

由于本地开发好的程序往往都需要部署到服务器上进行运行,这就导致了程序需要运行在不同的环境上,这通常是一个令人头痛的事情。在过去,开发团队需要清楚的告诉运维部署团队,其所使用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。

于是乎, 虚拟化 技术应运而生。开发团队将开发好的程序在虚拟机上运行,这样就能解决运维的问题。但是由于虚拟机技术过重的特性导致了其 资源占用多、冗余步骤多以及启动慢的缺陷 。而这个时候 一种新的虚拟化技术搭配上容器化的思想 的产品便出现了,而它就是Docker。

下图是虚拟机技术和容器化技术架构的对比。我们可以得出以下总结:

[图片上传失败...(image-efadd2-01)] ]()

于是乎相比于虚拟机技术,容器化技术具有以下 优势:

相关网站

如下图所示,Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。服务器端分为Docker daemon, Image和Container三个部分。此外还有Docker Registry。

下面首先来介绍一下Docker中的主要概念

Docker的运行原理如下:客户端可以将docker命令发送到服务器端的Docker daemon上,再由Docker damon根据指令创建、选择或者从Docker仓库中拉取(pull)镜像。接着客户端可以通过镜像创建容器。当我们需要使用程序时,运行相应的容器即可。

小结

需要正确的理解仓储/镜像/容器这几个概念 :

在外面使用容器的时候,我们不希望容器中的数据在容器被删除后也一并删除了,这时候我们就可以 通过使用容器数据卷,将数据储存在本地并用Docker将其挂载到容器中,这样我们即使删除了容器,数据也依旧存在服务器中,也就实现了数据持久化。

特点

容器数据卷挂载命令(-v)

Dockerfile 挂载容器数据卷

我们除了可以从仓库中拉取镜像以外,我们也可以 自己创建镜像 ,这就要用到Docerfile。

dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 。

构建步骤:

基础知识:

流程:

说明:

在实际场景中,我们会遇到 多个Container之间通讯 的问题。而Docker网络就是用于解决此问题的技术。docker会给每个容器都分配一个ip,且容器和容器之间是可以互相访问的。

Docker网络原理

每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。这是个桥接网卡,使用了 veth-pair 技术 。Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据 Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网 关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

Docker容器网络就很好的利用了Linux虚拟网络技术,在本地主机和容器内分别创建一个虚拟接口,并 让他们彼此联通(这样一对接口叫veth pair);

Docker中的网络接口默认都是虚拟的接口。虚拟接口的优势就是转发效率极高(因为Linux是在内核中 进行数据的复制来实现虚拟接口之间的数据转发,无需通过外部的网络设备交换),对于本地系统和容 器系统来说,虚拟接口跟一个正常的以太网卡相比并没有区别,只是他的速度快很多。

[图片上传中...(image-41d42a-52-2)]

Docker Compose是一个用于定义并运行多容器应用的工具 。

Docker Compose的 步骤如下 :

NOTE: Compose :重要的概念。

编写

Note: docker-compose会自动为多容器之间创建网络,保证通讯。

Docker Swarm 是Docker的集群管理工具。 它将 Docker主机池转变为单个虚拟 Docker主机。 Docker Swarm提供了标准的 DockerAPI,所有任何已经与 Docker守护程序通信的工具都可以使用 Swarm轻松地扩展到多个主机。

Docker 是一个开源的 应用容器引擎 ,它的出现大大简化了运维的难度,提高了运维效率。过去我们需要在服务器上安装程序所需要的所有依赖,而如今我们只需要编写好docker-compose和Dockefile的脚本,就可以使程序一键跑通。在企业级的应用中,我们必然会惊颤使用到Docker和容器化技术。

狂神说

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Docker

“Docker镜像-容器的交互及外部代码口头原理与通常 (docker logs)” 的相关文章

减少40%的构建时间-通过优化Docker构建流程 (减少50%)

减少40%的构建时间-通过优化Docker构建流程 (减少50%)

简介 在很多公司中,我们都为产品中使用的所有组件构建镜像。随着时间的推移,其中一些镜像变得越来越大,我们的 CI 构建耗时也越来越长。我的目标是让 CI 构建不超过 5 分钟——差不多是喝杯...

Docker-上装置-如何在-Ubuntu (docker logs)

Docker-上装置-如何在-Ubuntu (docker logs)

经常使用象征着开启一个新的计算畛域,但假设你刚刚开局经常使用Docker,装置或许看起来是一项艰难的义务。 在Ubuntu上装置Docker有两种介绍的方法: 我将在本教程中探讨它们。...

Docker容器编排技术解析-深化了解容器治理和编排 (docker是干什么的)

Docker容器编排技术解析-深化了解容器治理和编排 (docker是干什么的)

一、容器编排引见 容器编排是现代云原生运行治理的外围,它触及在大规模的环境中智能化部署、治理、裁减和网络性能容器。随着微服务架构的兴起和运行的复杂性参与,容器编排成为了成功高效、牢靠和灵活服...

七个杀手级Docker命令 (找一本讲一个叫七个杀手的小说)

七个杀手级Docker命令 (找一本讲一个叫七个杀手的小说)

Docker 是一种容器平台,它使用操作系统级别的虚拟化技术来实现软件打包和容器化运行。凭借 Docker,开发人员可以将应用程序打包成容器,以便在任何 Docker 环境中轻松部署。 Do...

基于Docker镜像逆向生成Dockerfile (基于docker的毕业论文设计)

基于Docker镜像逆向生成Dockerfile (基于docker的毕业论文设计)

引言 你能否曾经遇到过一个想要经常使用的镜像,但却不可修正以顺应你的特定需求?或许你或许发现了一个青睐的Docker镜像,但想要了解它是如何构建的?在这两种状况下,将Docker镜像逆向生成...

解决重启Docker时卡住问题 (解决重启卡在logo界面的问题)

解决重启Docker时卡住问题 (解决重启卡在logo界面的问题)

在使用 Docker 时,有时候会遇到容器重启无法正常启动的情况,即 docker restart 命令卡住不动。这种情况可能会导致容器无法正常运行,给我们的工作和开发带来一定的困扰...

打包应用程序代码和依赖项的机制-Docker容器 (qt如何打包应用程序)

打包应用程序代码和依赖项的机制-Docker容器 (qt如何打包应用程序)

概述 容器通过将应用程序的代码和所有依赖项打包到一个独立的软件包中,实现了应用程序的快速部署和移植。Docker容器是此类容器的一种流行实现,它使应用程序能够在不同的计算环境中一...

否-DBA视角-把数据库放入Docker-一个决定性的 (否昰什么意思)

否-DBA视角-把数据库放入Docker-一个决定性的 (否昰什么意思)

关于有形态的运行服务而言,容器是一个相当完美的开发运维处置打算。但是关于带耐久形态的服务——数据库来说,事件就没有那么繁难了。 消费环境 的数据库能否应当放入容器中,依然是一个充溢争...