美文网首页
docker简介

docker简介

作者: pilisiyang | 来源:发表于2019-11-18 14:21 被阅读0次

    docker介绍

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中。
    然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
    容器是完全使用沙箱机制,相互之间不会有任何接口。
    

    docker的应用场景

    • Web 应用的自动化打包和发布。
    • 自动化测试和持续集成、发布。
    • 在服务型环境中部署和调整数据库或其他的后台应用。
    • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。


    docker的安装

    • 安装docker的所需条件: 需要64位架构系统和Linux3.10以上内核,推荐在Ubantu下安装,docker是基于Ubantu开发的
    • 添加docker官方apt软件源

    /etc/apt/sources.list.d/docker.list deb deb https://apt.dockerproject.org/repo ubuntu-trusty main

    • 添加成功后更新apt软件包缓存

    $ sudo apt-get update

    • 安装docker

    $ sudo apt-get install –y docker-engine

    • 启动docker后执行

    docker run ubuntu:15.10 /bin/echo “Hello world“

    查看是否成功安装

    docker的构成

    • Docker 镜像(Images)

    Docker 镜像是用于创建 Docker 容器的模板。

    • Docker 容器(Container)

    容器是独立运行的一个或一组应用。

    • Docker 客户端(Client)

    Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。

    • Docker 主机(Host)

    一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

    • Docker 仓库(Registry)

    Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
    Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

    • Docker Machine

    Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

    如何创建docker镜像

    现在docker官方共有仓库里面有大量的镜像,所以最基础的镜像,我们可以在共有仓库直接拉取,因为这些镜像都是原厂维护,可以得到即使的更新和修护。

    1. 编写Dockerfile

    我们如果想去定制这些镜像,我们可以去编写Dockerfile,然后重新bulid,最后把它打包成一个镜像.

    1. Commit镜像

    当然还有另外一种方式,就是通过镜像启动一个容器,然后进行操作,最终通过commit这个命令commit一个镜像,但是不推荐这种方式.

    首先,如果在安装软件,编译构建,那会有大量的无关内容被添加进来,如果不小心清理,将会导致镜像及其臃肿。

    此外,使用docker commit 意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为黑箱镜像。

    而且,任何修改的结果仅仅是在当前层进行标记,添加,修改,而不会改动上一层。

    如果使用docker commit制作镜像,以及后期修改的话,每一次修改都会让镜像更加臃肿一次,所删除的上一层的东西并不会丢失,会一直如影随形的跟着这个镜像,即使根本无法访问到,这会使镜像更加臃肿。

    Dockerfile

    Dockerfile是一个包含用于组合映像的命令的文本文档。
    可以使用在命令行中调用任何命令。
    Docker通过读取Dockerfile中的指令自动生成映像。
    docker build命令用于从Dockerfile构建映像。
    可以在docker build命令中使用-f 标志指向文件系统中任何位置的Dockerfile。
    

    Dockerfile 一般分为四部分:

    • 基础镜像信息
    • 维护者信息
    • 镜像操作指令
    • 容器启动时执行指令

    docker的分层概念

    image.png
    这是一个Ubuntu镜像,可以看到镜像分成很多个layer,都有自己的大小和ID,最终这个镜像是由他们layer组合而成,并且这个镜像它是只读的,它不能往里面写数据,如果想写数据怎么办呢?
    
    我们会在镜像上启一层contain layer,其实就是相当于把镜像启动成一个容器,那么在容器这一层,我们是可写的。
    

    dockerfile指令

    指令 解释
    FROM 指定使用哪个镜像源
    RUN 执行命令并创建新的镜像层,通常用于安装软件包
    COPY 复制文件指令 COPY <源路径>...<目标路径> COPY ["<源路径1>",...<目标路径>]
    ADD 更高级的复制文件指令 能复制URL 资源,自动解压tar 包
    CMD 容器启动命令 只执行最后一条CMD
    ENTRYPOINT 入口点 指定容器启动程序及参数,将CMD 的内容作为参数传给 ENTRYPOINT
    ENV 设置环境变量
    ARG 构建参数 ARG 所设置的环境变量,在将来容器运行时是不会存在的
    VOLUME 定义匿名卷
    EXPOSE 声明端口 仅声明容器提供服务端口,并不会与宿主机映射 -p <宿主端口>:<容器端口>
    MAINTAINER 镜像创建者

    相关文章

      网友评论

          本文标题:docker简介

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