• Docker学习第一天


    Docker是什么

    (1)docker是解决了运行环境和配置问题的软件容器,方便做持续集成并有帮助于整体发布的容器虚拟化技术。
    (2)一次构建、随处运行,更快速的应用交付和部署,更快捷的升级和扩缩容,更简单的系统运维,更高效的计算资源利用。

    Docker的安装

    (1)Docker并非一个通用的容器工具,它依赖于已经存在并运行的Linux内核环境。
    (2)Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它的执行的效率几乎等同于所部署的Linux主机。
    (3)因此,Docker必须部署在Linux内核的系统上。如果其他系统想部署Docker必须安装一个虚拟Linux环境。

    Docker的基本组成

    (1)镜像:
    Docker镜像(Image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器。相当于容器的源代码,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
    (2)容器:
    从面向对象角度:Docker利用容器(Container)独立运行的一个或者一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是运行时的实体。容器为镜像提供了一个标准和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是互相隔离的、保证安全的平台。
    从镜像容器角度:可以把容器看做一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
    (3)仓库
    仓库(Respository)是集中存放镜像的场所。类似于Maven仓库,存放各种jar包的地方,github仓库,存放各种git项目的地方,Docker公司提供的官方registry被称为Doceker Hub,存放各种镜像模板的地方。
    仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    为什么Docker会比VM虚拟机更快

    (1)由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有更明显的优势。
    (2)docker利用的是宿主机的内核,而不需要加载操作系统os内核
    当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费力的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。

    docker常用命令

    (1)帮助启动类命令:
    启动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
    查看dokcer命令帮助文档:docker 具体命令 --help

    (2)镜像命令
    列出本地主机上的镜像:docker images (-a :列出本地所有的镜像;-q:只显示镜像id)
    其中 :
    REPOSITORY:表示镜像的仓库源
    TAG:镜像的标签版本号
    IMAGE ID:镜像ID
    CREATED:镜像创建时间
    SIZE:镜像大小
    同一个仓库源可以有多个TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果你不指定一个镜像的版本标签,例如只使用ubuntu,docker将默认使用ubuntu:latest镜像。

    docker search 某个镜像名字 (可以使用–limit Num 表示只显示前Num个镜像)

    docker pull 某个xxx镜像名字:TAG
    没有TAG就是最新版,等价于docker pull镜像名字:latest

    docker system df 查看镜像、容器、数据卷所占的空间

    docker rmi -f 镜像名:镜像tag/镜像id 删除多个镜像

    docker rmi -f $(docker images -qa) 查出所有的镜像id并删除所有镜像

    虚悬镜像:仓库名、标签都是的镜像

    (3)容器命令
    新建+启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG]
    OPTIONS说明(常用):有些是一个减号,有些是两个减号
    --name=“容器新名字” 为容器指定一个名称
    -d:后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
    -i :以交互式模式运行容器,通常与-t同时使用(interactive:交互式操作)
    -t:为容器重新分配一个伪输入终端,通常与-i同时使用;(tty:终端)
    也即启动交互式容器(前台有伪终端,等待交互);
    -P:随机端口映射,大写P
    -p:指定端口映射,小写P

    列出当前所有正在运行的容器 docker ps[OPTIONS]
    -a:列出所有正在运行的容器+历史上运行过得
    -l:显示最近创建的容器
    -n num:显示最近创建的num个容器
    -q:静默模式,只显示容器编号

    退出容器,两种退出方式
    exit(run进去容器,exit退出,容器停止)
    ctrl + p + q(run进去容器,ctrl+p+q退出,容器不停止)

    启动已经停止运行的容器 docker start 容器ID或者容器名字
    重启容器 docker restart 容器id或者容器名字
    停止容器 docker stop 容器id或者容器名字
    强制停止容器 docker kill 容器id或者容器名字

    docker rm 删除已经停止的容器

    在大部分场景下,我们希望docker的服务是在后台运行的,我们可以通过-d指定容器的后台运行模式。
    docker run -d 容器名
    redis前后台启动演示case:前台交互式启动-docker run -it redis:6.0.8 后台守护式启动-docker run -d reids:6.0.8

    重新进入正在运行的容器并且以命令行交互:
    docker exec -it 容器ID bashShell (exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止)
    重新进入 docker attach 容器ID(attach直接进入容器中启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止)

    从容器拷贝文件到主机上:
    docker cp 容器ID:容器内路径 目的主机路径

    导入导出容器
    export 导出容器内容作为一个tar归档文件【对应import命令】
    import 从tar包中的内容创建一个新的文件系统再导入镜像【对应export】
    案例:
    docker export 容器ID > 文件名.tar
    cat 文件名.tar | docker import-镜像用户/镜像名:镜像版本号

  • 相关阅读:
    现代卷积网络实战系列6:PyTorch从零构建ResNet训练MNIST数据集
    Nanoprobes FluoroNanogold 偶联物的特色和应用
    AD18原理图转Candence SPB17.4
    前端有哪些好的学习网站?
    中国青少年棒球运动宣传·棒球7号位
    【Rust】Rust环境配置与语法基础
    大数据笔记-Hive调优总结(二)- Hive建表设计层面
    C语言排序代码汇总测试
    弘辽科技:个性化时代做好店铺标签,让你的产品卖到爆
    基于opencv 的OCR小票识别(1)
  • 原文地址:https://blog.csdn.net/weixin_49131718/article/details/127970277