zoukankan      html  css  js  c++  java
  • Docker 中的一些概念

    笔者使用 Mac 系统玩的,所以会更多阐述 Mac 上使用的一些东西。

    在安装之前有些 Docker 相关的概念需要了解一下,以便我们更好了解 Docker。

    简单来说,安装 Docker 之后,会在机器上跑一个守护进程,你使用 docker 客户端相关命令时,会给到守护进程,由守护进程来处理相关的东西。

    在 Linux 系统中,Docker 客户端,守护进程还有你的容器都是跑在本地系统,这意味着容器的端口是直接映射到本地机器,你可以使用 localhost:8376 等来访问相关服务。

    在 Mac OS X 系统中,由于 Docker 要使用到 Linux 系统内核的一些特性,所以没法直接在 Mac OS X 上跑。Docker 的守护进程其实是运行在一个称为 default 的 Linux 虚拟机中,所以我们需要 Virtual Box 来使用 Docker。大致如下图:

    Docker Linux VM
     

    所以在 Mac OS X 系统中,Docker 的主机地址是这个 Linux 虚拟机的地址。当你使用 docker-machine 来开启虚拟机时,会分配一个 IP 地址。当你开启一个容器时,容器的端口会映射到这个虚拟机的端口。

    Docker Machine

    Docker Machine 用于在机器或者云端上创建多个虚拟主机。它可以创建虚拟主机然后自动安装 Docker,借助 docker-machine 你可以管理相关的主机。

    如果你是 Mac OS X 系统,创建新的虚拟主机很容易,使用以下命令即可:

    docker-machine create --driver=virtualbox vbox-test
    

    你也可以使用 --help 来了解命令的更多内容。

    如果你要基于云端来创建或者其他驱动,可以参考官方文档:https://docs.docker.com/machine/drivers/

    Docker Compose

    Docker Compose 是用来定义依赖多个容器运行的应用,例如一个 Wordpress 系统,我们需要数据库,如 Mysql,需要 php 运行时等,这些可以分布在不同的容器。Docker Compose 可以用于管理和配置多个容器相关的东西,多个容器通过 Docker Compose 连接起来形成完整的应用服务。

    注意,在我写这篇文章的时候,Docker Compose 还是不支持 windows 系统的,开发者还是使用 Mac 或者 Linux 的好。

    Docker Swarm

    Docker Swarm 是 Docker 原生的一个集群工具,它可以把多个 Docker 主机转化为单一的虚拟 Docker 主机。

    Docker Swarm 遵循 Docker 标准的 API,任何可以和 Docker 守护进程交互的工具,便可以利用 Docker Swarm 来转化为操作多个 Docker 主机。

    本文没有更多关于 Docker Swarm 的介绍,想要了解更多可以参考:Docker Swarm

    Docker Image

    Docker 镜像,便是某个应用或者服务打包好的,一个静态的包括应用或者服务相关信息的东西,在我们使用 Docker 运行某个应用时,我们需要从远程服务器上拉取相应的镜像。

    一个 Docker 的镜像是可以做很多事情的,甚至复杂到来启动一个数据库,来等待用户增删改查,都是可以的。

    Docker 镜像的意义在于让人们可以创建和分享应用,使用 Docker 镜像,你不用考虑这个应用或者软件能否在机器上跑,Docker 的容器总是可以运行 Docker 镜像的。

    官方提供了一个获取和发布镜像的地方:https://hub.docker.com

    Docker Container

    Docker 容器,是某个镜像的一个运行中的实例,容器可以理解为 Linux 操作系统的一个基础版本,镜像是加载到容器的软件内容。

    容器的运行情况,取决于镜像是由什么内容构建的,一个镜像可能只是运行简单的一个命令后便退出,最简单的镜像例子 hello-world 就是这样的。

    我们可以通过 Docker 客户端的命令来管理容器,例如重启,停止,销毁等。

    有一个需要留意的点是,Docker 的容器是一次性的,其本身并不具备持久化的东西。例如我们运行一个 MySQL 的容器,如果容器重启了,在其运行期间写入的所有数据是不会存在的,因此,Docker 提供了一种方式让系统的某个目录映射到容器的某个目录中,以便做文件或数据的持久化处理,往往许多数据库的容器都需要用到,这个后边会再详述。

  • 相关阅读:
    Get distinct count of rows in the DataSet
    单引号双引号的html转义符
    PETS Public English Test System
    Code 39 basics (39条形码原理)
    Index was outside the bounds of the array ,LocalReport.Render
    Thread was being aborted Errors
    Reportviewer Error: ASP.NET session has expired
    ReportDataSource 值不在预期的范围内
    .NET/FCL 2.0在Serialization方面的增强
    Perl像C一样强大,像awk、sed等脚本描述语言一样方便。
  • 原文地址:https://www.cnblogs.com/YatHo/p/7017261.html
Copyright © 2011-2022 走看看