docker学习笔记

    技术2022-07-15  53

    什么是Docker

    Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

    使用Docker好处

    简化配置

    虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件, 系统), Docker在降低额外开销的情况下提供了同样的功能. 它能让你将运行环境和配置放在代码汇总然后部署, 同一个Docker的配置可以在不同的环境环境中使用, 这样就降低了硬件要求和应用环境之间耦合度。

    代码流水线管理

    代码从开发者的机器到最终在生产环境上的部署, 需要经过很多的中坚环境. 而每一个中间环境都有自己微小的差别, Docker给应用提供了一个从开发到上线均一致的环境, 让代码的流水线变得简单不少.

    提升开发效率

    开发者可以贴近生产环境,并可以快速搭建开发环境。Docker可以轻易的让几十个服务在Docker中跑起来。

    隔离应用

    将一个整体式的应用拆分成低耦合的单个服务(微服务架构)

    Docker基本概念

    镜像(Image)

    Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变。

    容器(Container)

    Docker的镜像是用于生成容器的模板,镜像分层的,镜像与容器的关系,就是面向对象编程中类与对象的关系,我们定好每一个类,然后使用类创建对象,对应到Docker的使用上,则是构建好每一个镜像,然后使用镜像创建我们需要的容器。

    仓库(Repository)

    用来存放和分发镜像的服务,Docker Hub就是Docker提供用于存储和分布镜像的官方Docker Registry,也是默认的Registry,其网址为https://hub.docker.com。

    Docker基本命令

    镜像常用命令

    搜索镜像
    docker search java

    再上图的结果中共有5列,分别代表以下含义

    NAME:镜像仓库名称DESCRIPTION:镜像仓库描述STARS:镜像仓库收藏数,跟GitHub的stars一样一样的OFFICAL:表示是否为官方仓库,该列标记为【OK】的镜像均由各软件的官方项目组创建和维护。AUTOMATED:表示是否自动构建的镜像仓库
    下载镜像
    docker pull java

    执行该命令后,Docker会从Docker Hub中的java仓库下载最新版本的java镜像

    列出镜像
    docker images

    列出已下载的镜像

    上图的结果共有5列,分别代表以下含义

    REPOSITORY:镜像所属仓库名称TAG:镜像标签,latest表示最新的IMAGE ID: 镜像ID,表示镜像唯一标识CREATED:镜像创建时间SIZE:镜像大小
    删除本地镜像

    使用docker rmi命令即可删除指定镜像

    容器常用命令

    新建并启动容器
    dokcer run 镜像名

    常见选项

    d:表示后台运行P:随机端口映射p:指定端口映射,有四种格式 ip:hostPort:containerPortip::containerPorthostPort:containerPortcontainerPort
    列出容器
    docker ps

    上图的结果共有7列,分别代表以下含义

    CONTAINER_ID:表示容器IDIMAGE:表示镜像名称COMMAND:表示启动容器时运行的命令CREATED:表示容器的创建时间STATUS:表示容器运行状态,Up为运行中,Exited为停止PORTS:表示容器对外的端口号NAMES:表示容器名称
    停止容器
    docker stop ContainerId
    强制停止容器
    docker kill ContainerId
    启动已停止的容器
    docker start ContainerId
    重启容器
    docker restart
    删除容器
    docker rm Container

    小知识:该命令只能移除已停止的容器,如果需要移除正在运行的容器,可以使用-f参数

    Processed: 0.014, SQL: 9