当前位置: 首页 > 后端技术 > Python

docker_1_introduction

时间:2023-03-26 13:54:21 Python

Docker是一个开源的应用容器引擎,基于Go语言,遵守Apache2.0协议开源。Docker允许开发人员将他们的应用程序和依赖项打包到一个轻量级、可移植的容器中,然后将其发布到任何流行的Linux机器上,并且还可以进行虚拟化。Docker容器完全使用沙箱机制,它们之间不会有接口。与虚拟机相比,容器启动速度快,性能开销极低。Docker架构首先介绍一下Docker的架构,可以用下图来表示。它主要由客户端、主机和注册中心组成。下面提到几个专有名词。下面一一介绍一下:ImageDocker镜像,一个创建Docker容器的模板。可以看成是Java中的Class类。容器一个或一组独立运行的容器。启动Images后会生成一个Container,所以可以看成是Java中类的实例化对象。一个Image可以启动多次,生成多个Container。客户端Docker客户端,使用DockerApi与Docker守护进程通信。一般在桌面开发中,下面介绍的Client和Host都在同一个客户端中,这让我们感觉Client和Host是在一起的。其实原理就是两个独立的模块。HostDocker主机,物理机或虚拟机,用于执行Docker守护进程和容器。RegistryDocker仓库,用于保存镜像。Docker官方镜像是https://hub.docker.com/,你可以在注册后存放你自己的镜像。Machinedocker-machine是一个帮助你快速创建和安装docker环境的工具。当我们需要在多台服务器上安装一个Docker环境时,我们可以使用Machine来安装。Docker的常用操作流程在日常工作中,最常用的Docker操作有以下几种,主要包括:本地提交镜像到远程镜像远程获取镜像到本地,在本地进行镜像测试和生产接下来,实际Docker的安装和运行。安装Docker官方这里https://docs.docker.com/install给出了详细的安装过程,按照步骤一步步安装即可,一般不会有什么问题。注意:在Ubuntu系统上安装时,建议使用仓库安装,否则直接使用安装包安装会出现很多依赖问题。Docker基本操作Docker安装完成后,我们可以运行dockerrunhello-world来启动我们的第一个docker容器。一般情况下,docker会在远程仓库下载hello-world后直接启动。Docker的操作主要有两种,一种是Image镜像的操作,一种是Container容器的操作。容器与镜像的关系首先,我们通过下图重新认识一下容器与镜像的关系。简单来说,镜像类似于Classes,容器类似于newobject。另外,图片类似于Class类,也有继承关系。也就是说,一个镜像可以在另一个镜像的基础上增加自己的新功能和需求。这个会在后续制作Docker镜像和Docker文件结构中详细讨论。镜像操作下面是主要的镜像操作,docker[images|rmi|tag|build|history|save|load]images:列出本地镜像列表rmi[镜像名称:版本]:删除镜像标签[镜像名称:版本][仓库]/[镜像名称:版本]:标记本地镜像,放入某个仓库build-t[镜像名称:版本][路径]:Dockerfilecreatemirrorhistory[镜像名称:版本]:查看创建指定镜像Historysave-oxxx.tar[imagename:version]/save[imagename:version]>xxx.tar:将镜像另存为tar归档文件load--inputxx.tar/dockerloadtest.tar:文件系统作为tararchiveimporttest.tar[镜像名称:版本号]:导入archive文件成为镜像。上面给出了容器和镜像的基本操作。总的来说,以下三种是比较常见的开发方式。1.启动容器,后台运行dockerrun-d--namemyhello-worldhello-world注意到-d参数在后台运行,--name指定了容器的名称。同时可以在运行时绑定容器端口。比如启动nginx容器时,可以将nginx的80端口绑定到本机8080端口dockerrun-d-p8080:80--namenginxnginx:latest2。进入正在运行的容器dockerexec-itnginx/bin/bash-it交互启动bash,后面会经常用到,因为打入容器调试是常事。本节主要介绍Docker的基本架构和运行,然后介绍Docker的文件结构和Docker的制作。本文由《后端卓越之路》原创,首发于博客http://teckee.github.io/。转载请注明出处。袁氏BATJ精品面试课程。