zoukankan      html  css  js  c++  java
  • Docker笔记

    原文 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html 参考

    一、环境配置的难题

    当某个应用程序可以在某个机器上Run的时候,不代表在别的机器上也可以运行。可能会因为缺少配置文件等环境依赖而无法运行,配置环境会变得十分的麻烦。所以能不能根本上解决问题,软件可以带环境去安装,即安装该软件的时候把环境也一并复制过来。

    二、虚拟机

    虚拟机(virtual machine)就是带环境安装的一种解决方案。但是虚拟机启动慢,占用资源多,冗余步骤多。

    三、Linux容器

    Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。启动快,占有资源小,体积小。

    四、Docker

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。

    Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

    五、Docker安装

    1.安装docker 可在官网安装。

    2.通过 docker version  或者 docker info 查看是否安装成功。

    3.把当前用户加入Docker用户组,否则有权限限制。

    4.Docker 是服务器----客户端架构。命令行运行docker命令的时候,需要本机有 Docker 服务。

    六、Image镜像

    Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。

    image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

    查看本机的所有image文件

    docker image ls 

    七、实例 hello world

    docker image pull library/hello-world

    上面代码中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组,hello-world是 image 文件的名字。

    docker container run命令会从 image 文件,生成一个正在运行的容器实例。

    docker container run hello-world

    注意,docker container run命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取。因此,前面的docker image pull命令并不是必需的步骤.

    八、容器文件

    image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

    列出本机正在运行的容器

    docker container ls

    列出本机所有的容器,包括停止运行的容器

    docker container ls -all

    结束正在运行的容器,无法kill停止运行的容器,

    docker container kill containerID

    终止运行的容器文件,依然会占据硬盘空间。使用下面命令可以清除。

    docker container rm containerID

    九、Dockerfile文件

    学会使用 image 文件以后,接下来的问题就是,如何可以生成 image 文件?如果你要推广自己的软件,势必要自己制作 image 文件。

    这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

    十、docker数据卷 

    数据卷存在于宿主机中,独立于容器,和容器的生命周期是分离的,数据卷存在于宿主机的文件系统中,数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换。

    数据卷的特点:

    1.容器启动的时候初始化的,如果容器使用的镜像包含了数据,这些数据也会拷贝到数据卷中。

    2.容器对数据卷的修改是及时进行的。

    3.数据卷的变化不会影响镜像的更新。数据卷是独立于联合文件系统,镜像是基于联合文件系统。镜像与数据卷之间不会有相互影响。

    4.数据卷是宿主机中的一个目录,与容器生命周期隔离。

  • 相关阅读:
    SpringMVC
    SpringMVC
    SpringMVC
    SpringMVC
    JavaWeb
    SpringMVC
    SpringMVC
    Spring
    Spring
    Spring
  • 原文地址:https://www.cnblogs.com/cdjbolg/p/14411926.html
Copyright © 2011-2022 走看看