Docker

作者: 图图大王的小旋风 | 来源:发表于2017-10-22 21:46 被阅读0次

    docker是什么

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

    为什么要用docker

    更快速的交付和部署

    开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

    更高效的虚拟化

    Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

    更轻松的迁移和扩展

    Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

    隔离性

    Docker可以确保你的应用程序与资源是分隔开的。

    安全性

    Docker确保运行在容器中的应用程序和其他容器中的应用程序是完全分隔与隔离的,在通信流量和管理上赋予你完全的控制权。Docker容器不能窥视运行在其他容器中的进程。从体系结构角度来看,每个容器只使用着自己的资源(从进程到网络堆栈)。

    docker基本使用

    镜像(Image)

    是一个只读模板,用来运行Docker容器。

    容器(Container)

    负责应用程序的运行,包括操作系统、用户添加的文件以及元数据
    容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

    注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

    仓库(Repository)

    仓库是集中存放镜像文件的场所。

    仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等

    镜像
    基本命令
    登陆,登出到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
    docker login [OPTIONS] [SERVER]
    docker logout [OPTIONS] [SERVER]
    从镜像仓库中拉取或者更新指定镜像
    docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
    docker push [OPTIONS] NAME[:TAG]
    搜索docker镜像
    docker search [OPTIONS] TERM
    查看镜像详细信息
    docker inspect [image-id]
    列出本地镜像
    docker images [OPTIONS] [REPOSITORY[:TAG]]
    删除本地一个或多少镜像
    docker rmi [OPTIONS] IMAGE [IMAGE...]
    标记本地镜像,将其归入某一仓库
    docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
    使用Dockerfile创建镜像
    docker build [OPTIONS] PATH | URL | -
    将指定镜像保存成 tar 归档文件
    docker save [OPTIONS] IMAGE [IMAGE...]

    容器
    容器可以分为两种类型:
    交互型容器:前台运行,可以通过控制台与容器交互。如果创建该容器的终端被关闭,则容器就变为停止状态。此外,在容器控制台中输入exit或者通过docker stop或docker kill也能终止容器。
    后台型容器:后台运行,创建启动之后就与终端无关了,需要用docker stop或docker kill来终止。
    基本命令
    创建一个新的容器并运行一个命令
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    创建一个新的容器但不启动它
    docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
    启动,停止,重启,杀掉一个或多少已经被停止的容器
    docker start [OPTIONS] CONTAINER [CONTAINER...]
    docker stop [OPTIONS] CONTAINER [CONTAINER...]
    docker restart [OPTIONS] CONTAINER [CONTAINER...]
    docker kill [OPTIONS] CONTAINER [CONTAINER...]
    删除一个或多少容器
    docker rm [OPTIONS] CONTAINER [CONTAINER...]
    列出容器
    docker ps [OPTIONS]
    列出指定的容器的端口映射
    docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
    从容器创建一个新的镜像
    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    用于容器与主机之间的数据拷贝
    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
    docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

    上传镜像
    本地镜像的制作有使用commit命令和编写Dockerfile两种方式。
    docker login(docker hub 账户)
    docker commit [container-id] [dockerhub_name/name]
    docker push [dockerhub_name/name]

    Dockerfile是一种更加透明并且可重复的制作方式,因为我们不是手动执行操作,而是将所有操作用Docker提供的命令和语法编写到Dockerfile中。命令名全部大写,常用的Dockerfile命令有:
    FROM:指定扩展自哪个父级镜像。
    RUN:执行命令修改镜像。例如RUN apt-get update和RUN [“apt-get”, “update”]。前者在/bin/sh中执行命令,后者直接使用系统调用exec执行。
    EXPOSE:指明容器内进程对外开放的端口。也可以在容器启动时用-p参数开放一些在Dockerfile里没有列出的端口。
    ADD:添加宿主主机文件、文件夹或URL指定资源到镜像中。
    ENV:设置容器运行的环境变量。
    USER:为容器的运行以及Dockerfile后面的命令指定用户。
    WORKDIR:指定工作目录(最后一个会作为容器启动后的工作目录)
    VOLUME:挂载文件
    CMD和ENTRYPOINT:指定容器启动后执行的命令
    ONBUILD:指定一些命令在当前镜像构建时不会执行,而是在子镜像构建时触发。

    构建image
    docker build -t [dockerhub_name/name] dockerfile path

    相关文章

      网友评论

          本文标题:Docker

          本文链接:https://www.haomeiwen.com/subject/webnuxtx.html