zoukankan      html  css  js  c++  java
  • docker入门实例

    Docker 是什么?

    我们在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机。

    每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。

    每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
    而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。
    容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
    容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。
    通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。
    容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。

    容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
    而 Linux 容器是 Linux 发展出的另一种虚拟化技术,简单来讲, Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。
    对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
    Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。
    程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。

    总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

    Docker 的三个基本概念

    Image(镜像)

    Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
    镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像(Image)就是一堆只读层(read-only layer)的统一视角

    Container(容器)

    容器(Container)的定义和镜像(Image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

    由于容器的定义并没有提及是否要运行容器,所以实际上,容器 = 镜像 + 读写层

    Repository(仓库)

    Docker 仓库是集中存放镜像文件的场所。镜像构建完成后,可以很容易的在当前宿主上运行。

    实际上,一个 Docker Registry 中可以包含多个仓库(Repository),每个仓库可以包含多个标签(Tag),每个标签对应着一个镜像。
    所以说,镜像仓库是 Docker 用来集中存放镜像文件的地方,类似于我们之前常用的代码仓库。
    通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。
    我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 Latest 作为默认标签。

    Docker 的安装和使用

    CentOS 7.4 64 位

    由于 Docker-CE 支持 64 位版本的 CentOS 7 ,并且要求内核版本不低于 3.10,首先我们需要卸载掉旧版本的 Docker:

    $ sudo yum remove docker 
    docker-client 
    docker-client-latest 
    docker-common 
    docker-latest 
    docker-latest-logrotate 
    docker-logrotate 
    docker-selinux 
    docker-engine-selinux 
    docker-engine 

    我们执行以下安装命令去安装依赖包:

    $ sudo yum install -y yum-utils 
    device-mapper-persistent-data 
    lvm2 

    安装 Docker

    Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 Docker,只需要运行下面的 yum 命令:

    $ sudo yum install docker 
    当然在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装:

    curl -fsSL get.docker.com -o get-docker.shsh get-docker.sh 
    具体可以参看 docker-install 的脚本:

    https://github.com/docker/docker-install 
    执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的 Edge 版本安装在系统中。

    安装完成后,运行下面的命令,验证是否安装成功:

    docker version 或者 docker info 
    返回 Docker 的版本相关信息,证明 Docker 安装成功

    应用:

    我们通过最简单的 Image 文件 Hello World,感受一下 Docker 的魅力吧!

    我们直接运行下面的命令,将名为 hello-world 的 image 文件从仓库抓取到本地:

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

    抓取成功以后,就可以在本机看到这个 image 文件了:

    执行 docker images 命令 查看本地镜像:

    执行 docker run hello-world  运行hello-world这个镜像:

    输出这段提示以后,hello world 就会停止运行,容器自动终止。有些容器不会自动终止,因为提供的是服务,比如 MySQL 镜像等。


    Docker 提供了一套简单实用的命令来创建和更新镜像,我们可以通过网络直接下载一个已经创建好了的应用镜像,并通过 Docker RUN 命令就可以直接使用。

    当镜像通过 RUN 命令运行成功后,这个运行的镜像就是一个 Docker 容器啦。

    容器可以理解为一个轻量级的沙箱,Docker 利用容器来运行和隔离应用,容器是可以被启动、停止、删除的,这并不会影响 Docker 镜像。

    执行 docker ps -a  可以显示所有的容器,包括未运行的。

  • 相关阅读:
    Xcode8 去除系统日志输出
    SVN参考命令
    Xcode模拟网络状态
    iOS 图片拉伸
    iOS进阶
    label中添加图片
    Cookie的格式及组成
    java数据类型总结
    Hibernate一级缓存与二级缓存的区别
    mysql连接jdbc查询代码
  • 原文地址:https://www.cnblogs.com/starfish29/p/10646625.html
Copyright © 2011-2022 走看看