Docker

 

Docker

Docker简介


    1、是什么
        系统平滑移植,容器虚拟化技术
        安装的时候,把原始环境一模一样的复制过来
        概念:通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的app及运行环境能够做到“一次镜像,处处运行”
    2、与虚拟机的区别
        docker相当于VMware
        虚拟操作系统 相当于 项目.镜像文件


Docker基本组成


    1、Docker的基本组成
        镜像:一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。一种轻量级、可执行的独立软件包,包含运行某个软件所需的所有内容,将应用程序和配置依赖打包形成一个可交付的运行环境(包括代码、运行时所需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。
        容器容器是用镜像创建的运行实例。(镜像类似于Java的类模板,而容器类似于java中new出来的实例对象)镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
        仓库集中存放镜像的地方
    2、仓库、镜像、容器的区别与联系:
        Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置环境打包成一个可支付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例。
        image文件可以看作是容器的模板。Docker根据image文件生成image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。
        镜像文件:
            image文件生成的容器实例,本身也是一个文件,称为镜像文件。
        容器实例:
            一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。
        仓库:存放镜像。

Docker的安装

https://docs.docker.com/engine/install/ubuntu/
https://blog.csdn.net/xiaopang_love_study/article/details/120653689
没有可用的软件包 docker-ce,但是它被其它的软件包引用了。
 
sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stable"

Docker命令


    启动类命令


        启动docker:systemctl start docker
        停止docker:systemctl stop docker
        重启docker:systemctl restart docker
        查看docker状态:systemctl status docker
        开启启动:systemctl enable docker
        查看docker概要信息:docker info
        查看docker总体帮助文档:docker --help
        查看docker命令帮助文档:docker [命令] --help


    镜像命令


        docker images[-a 列出本地所有镜像 (含历史镜像)/ -q只显示镜像ID]:列出本地主机所有镜像
            repository:表示镜像的仓库源
            tag:镜像的标签版本号(latest)
            image id:镜像ID
            created:镜像创建时间
            size:镜像大小
        docker search [--limit 5] [image name]:查找某镜像是否在远程库
        docker pull [image name:tag]:下载镜像
        docker system df 查看镜像/容器/数据卷所占的空间
        docker rmi [-f 强制删][image name/id]:删除
        虚悬镜像:仓库源和标签都是null的镜像


    容器命令


        新建+启动容器:docker run [--name给创建的容器起名  -d启动守护式容器/ -it启动交互式容器  -P随机端口映射/-p hostPort:containerPort指定端口映射] image [arg...]
        列出正在运行的容器:docker ps [-a正在运行的容器和历史运行过的 -l最近创建的 -n最近n个创建的 -q只显示容器编号]
        启动容器:docker start [image id/name]
        重启容器:docker restart [image id/name]
        停止容器:docker stop[image id/name]
        强制停止:docker kill[image id/name]
        删除容器:docker rm[image id/name]

Docker镜像


    镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好行程一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。


    联合文件系统


    Docker 中的文件存储驱动叫做 storage driver。

    Docker 最早支持的stotage driver是 AUFS,它实际上由一层一层的文件系统组成,这种层级的文件系统叫UnionFS。

    联合文件系统(UnionFS):Union 文件系统,是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite serveral directories into a single virtual filesystem)。

    Union文件系统是Docker镜像的基础。镜像可以通过分层来进行集成,基于基础镜像可以制作具体的应用镜像。

    特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

    后来出现的docker版本中,除了AUFS,还支持OverlayFS、Btrfs、Device Mapper、VFS、ZFS等storage driver。

    bootfs和rootfs

    bootfs(boot file system)主要包含 bootloader 和 kernel,bootloader主要是引导加载 kernel,Linux刚启动时会加载bootfs文件系统。

    在Docker镜像的最底层是引导文件系统bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已经由 bootfs 转交给内核,此时系统也会卸载 bootfs。

    rootfs(root file system),在bootfs之上,包含的就是典型Linux系统中的 /dev、/proc、/bin、/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu、CentOS等。

镜像分层


    镜像分层的一个最大好处就是共享资源,方便复制迁移,方便复用
    当容器启动时,一个新的可写层将被加载到镜像的顶部,这一层通常被称为容器层,容器层之下的都叫镜像层。所有对容器的改动,无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。


   commit命令


    作用:提交容器副本使之成为一个新的镜像

    ubuntu安装vim:
        1.下载并运行ubuntu镜像
            docker  run -it  ubuntu /bin/bash
        2.原始的ubuntu镜像不带vim命令:commit命令作用使得生成的副本成为新的镜像
            2.1更新包管理工具
                apt-get update
            2.2安装vim
                apt-get install vim
            2.3提交新的容器副本,使之成为新的镜像
                docker commit -m=描述信息 -a=作者 副本容器ID 新的镜像名:标签
                docker commit -m="add vim" -a="lee" id vimUbuntu 

容器数据卷


    容器卷与主机互联互通


        将docker容器中数据保存到宿主主机的磁盘中,容器与宿主机之间双向数据共享
        

docker run -it --privileged=true -v/宿主机绝对路径目录:/容器内目录 镜像名


        查看数据卷是否挂在成功:

docker inspect 容器ID


        限制容器内只读(默认rw):

docker run -it --privileged=true -v/宿主机绝对路径:/容器内目录:ro 镜像名 


    容器卷之间的继承:两者之间实现数据共通


  

      docker run -it --privileged=true --volumes-from 父类 --name name 镜像名称

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值