当前位置: 首页 > Web前端 > HTML5

前端眼中的docker

时间:2023-04-05 15:26:02 HTML5

docker是什么?你可以简单的把一个docker容器看成一个虚拟机,打包就是把这个虚拟机打包。打包后可以在任何系统上运行,docker安装后可以立即使用。它也可以比作容器。所有的货物都打包好放在箱子里。无需分类运输。容器之间互不影响。统一应用环境的好处是方便迁移,占用资源少(如果单独开一个虚拟机,那么虚拟机就有机会占用空闲内存,如果部署了docker,这些内存就会被占用)docker和虚拟机对比虚拟机就是把一套硬件虚拟出来,在上面运行一个完整的操作系统,然后在系统上运行所需要的应用程序进程容器中的应用程序进程直接运行在宿主机的内核上。容器没有自己的内核,也没有硬件虚拟化。Docker架构的基本概念是镜像。Docker镜像是一种特殊的文件系统。除了提供程序和库、资源、配置等文件外,还包含一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像只是一个虚拟的概念,是分层存储的。它不是由一个文件组成,而是由一组文件系统组成,或者说是由多层文件系统组合而成。容器1.图像(Image)和容器(Container)的关系,就像面向对象编程中的类和实例一样,图像是一个静态定义,容器是图像运行时的??实体。容器可以创建、启动、停止、删除、暂停等。2.容器的本质是一个进程,但它不同于宿主执行的进程。它有独立的命名空间,因此有自己的根文件系统、网络配置和进程空间。3、容器存储层的生命周期与容器相同。容器死了,容器存储层也死了,所以容器存储层中存储的任何信息都会在容器被删除时丢失。注意:Docker最佳实践要求1.容器不应向其存储层写入任何数据,容器存储层应保持无状态。2、所有的文件写入操作都应该使用数据卷(Volume)或者绑定主机目录。在这些位置读写会跳过容器存储层,直接读写宿主机(或网络存储)。更高的性能和稳定性3.数据卷的生命周期是独立于容器的,容器死了,数据卷不会死仓库一个DockerRegistry可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个图像。使用镜像获取镜像dockerpull[option][DockerRegistry地址[:端口号]/]仓库名称[:label]dockerpullubuntu:16.04dockerrun命令运行容器dockerrun-it--rm\ubuntu:16.04\bash-it:-i:交互操作-t:terminal我们打算进入bash执行一些命令,查看返回的结果,所以需要一个交互终端--rm:这个参数表示容器会被删除退出bash后:put图像名称后是命令,这里我们要有一个交互式的shell,所以用了bash。列出图像dockerimagelsdockerimagels-fdangling=truedanglingimagedockerimageprunedeletedanglingimagedockerimagels-amiddlelayerimagedockerimagelsubuntu列出部分图像dockerimagels-fsince=mongo:3.2dockerimagels-fbefore=mongo:3.2删除本地镜像dockerimagerm[options][...]dockerimagermIDdockerimagermimagenamedockerimagermsummarydockerrmiimagenameDockercommandDockerfilecustomimageFROM指定基础镜像RUN执行构建镜像的命令dockerbuild-tnginx:v3.COPY复制文件COPY...COPYpackage.json/usr/src/app/相对路径relative到工作目录(工作目录可以使用WORKDIR,各种元数据将被保留。例如读、写、执行权限、文件更改时间等。ADDAdd比COPY有更多的特点,比如可以是一个URLCMDshell:CMDexec:CMD["executablefile","parameter1","参数2"]CMDecho$HOMECMD["sh","-c","echo$HOME"]ENVENVNODE_VERSION7.2.0orENVNODE_VERSION=7.2.0例如使用:RUNcurl-SLO"https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION动作容器启动$dockercontainerrun\-d\-p127.0.0.2:8080:80\--rm\--namemynginx\nginxrestartdockercontainerstartterminatedockerstopID进入容器dockerattachID/exit会导致容器退出dockerexec-itID/exit不会导致容器退出DockerCompose安装和卸载linuxinstall$sudocurl-Lhttps://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname-s`-`uname-m`>/usr/local/bin/docker-compose$sudochmod+x/usr/local/bin/docker-composeuninstall$sudorm/usr/local/bin/docker-compose使用docker-composeupdocker-composedowndocker-compose--version项目实践