zoukankan      html  css  js  c++  java
  • 初识docker

    docker基于go语言实现的云开源项目,docker的主要目标是‘Build,Ship and Run Any App,Anywhere’,即通过对用用组件的封装(Packaging)、分发(DIstribution)、部署(Deployment)、运行(Running)等生命周期的管理,达到应用级别的‘一次封装,到处运行’。应用组件可以是Web应用,数据库服务、甚至操作系统或编译器。

    docker基于linux的多项开源技术提供高效、敏捷、轻量级的容器方案。

     

       虚拟化技术是一个通用的概念,在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存与存储等予以抽象、转换后呈现出来。打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。

    docker三大核心概念:镜像、容器、仓库。

    docker镜像类似于虚拟机镜像,可以理解为面向docker引擎的只读模板,包含文件系统。

    docker容器类似于轻量级沙箱,利用它可以运行和隔离应用。镜像本身是只读的,容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身保持不变。

    docker仓库类似于代码仓库,是docker集中存放镜像文件的场所。

    镜像操作:

    镜像是docker运行容器的前提,使用docker pull命令从网络上下载镜像。镜像文件一般是由若干层组成的,行首为代表各层的id。下载过程会获取并输出镜像各层信息,层是实现增量保存和更新的基础。

    获取镜像:默认从获取最新。

    获取指定版本镜像:

    从其他注册服务器获取:

    利用该镜像创建一个容器,在其中运行bash应用:

    使用docker images命令列出本地主机上已有的镜像

    查看镜像信息:

    tag信息用于标识同一个仓库的不同镜像。为了方便后续工作,还可以使用docker tag 命令为本地镜像添加新的标签。

    不同镜像的id是一致的,它们指向了同一个镜像文件,只是别名不同而已。

    使用docker inspect命令可以获取该镜像的详细信息。返回的是json格式的消息。

    如果只要其中一项的内容时,可以使用-f参数指定,指定镜像id的时候,可使用前几个字符代替完整的id。

    搜寻镜像:

    使用docker search命令,搜索远端仓库的共享镜像

    删除镜像:

    使用docker rmi命令可以删除镜像,当一个镜像有多个标签的时候,只是会删除该标签,并不影响镜像文件,当只有一个标签的时候会彻底删除该镜像。

    使用docker rmi 镜像id命令删除镜像,会尝试先删除所有的别名,再删除镜像文件,当有该镜像创建的容器存在的时候,镜像文件无法被删除。强制删除加上-f参数(会有其他问题)正确做法是先删除所有依赖容器在使用临时的id删除镜像文件。

    可以使用docker ps -a命令查看本机存在的所有容器。

     创建镜像:

    方法有三种:基于已有的镜像的容器创建,基于本地模板导入,基于Dockerfile创建

    基于已有的镜像的容器创建

     使用docker commit命令 

    创建一个新镜像,进行修改,如创建一个test文件

    使用docker commit命令 ,提交为一个新镜像,(-a作者信息 -m提交信息 -p提交时暂停容器运行),提交时可以使用id或名称指定容器。命令返回新的镜像id信息。

    此时查看本地镜像列表。

    基于本地模板导入

     

    存入和载入镜像

    docker save和docker load命令

    存出镜像到本地文件。

    从存出的文件再导入到本地镜像库。

    上传镜像

    docker push命令

       

      容器,可以理解是镜像的一个运行实例,但它带有额外的可写文件层。docker容器就是独立运行的一个或者一组应用,以及他们的必须运行环境。属于轻量级用户可以随时创建和删除容器。

    创建命令:docker create命令,此时容器处在停止状态,可以使用docker start命令启动。

    新建并启动命令:docker run

     

     守护态运行

    docker ps查看容器信息

    docker logs获取容器输出信息

     

     终止容器

    查看处于终止状态的容器id信息

    重新启动终止态的容器

     重启

    进入容器,包括docker attach命令,docker exec命令,以及nsenter工具等

    docker attach命令,docker自带命令,有个不方便之处,当多个窗口同时attach到同一个容器的时候,所有窗口同步显示,某一个窗口命令阻塞,其他也无法执行

    exec命令,可以直接在容器内运行的命令

    删除容器

    docker rm 

    导入导出容器

    导出容器是指导出一个已经创建的容器到一个文件,不管此容器是否处于运行状态,使用docker export命令

    可以将这些文件传输到其他的机器,在其他的机器上通过导入命令实现容器的迁移

    导入容器

    导出的文件又可以通过docker import 命令导入成为镜像。

    仓库,是集中存放镜像的地方,分为公共仓库和私有仓库。官方维护公共仓库https://hub.docker.com。

    实际上注册服务器是存放仓库的具体服务器,每个服务器有多个仓库,每个仓库有多个镜像。

    使用registry镜像创建私有仓库,自动下载并启动一个registry容器,创建本地私有仓库服务。

    默认会将仓库放在容器的/tem/registry目录下,也可以通过-v存放指定目录,

    管理私有仓库

    查看已有镜像

    docker tag命令标记镜像

    docker push上传标记镜像

    用curl查看仓库10.0.2.2:5000

  • 相关阅读:
    unity vscode 断点问题
    unity Prefab 序列化一个小问题。
    公司有同事中病毒
    有点愧疚,今天把unity官方骗了...
    网络处理,发送约定
    (转载)MonoBehaviour的事件和具体功能总结
    控制台输出乱码问题
    vs遇到的字符串问题
    cmake的下载和安装
    三消设计思路, 通过配置文件搞定一切。
  • 原文地址:https://www.cnblogs.com/master-song/p/9583493.html
Copyright © 2011-2022 走看看