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。大致如下图:
所以在 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 提供了一种方式让系统的某个目录映射到容器的某个目录中,以便做文件或数据的持久化处理,往往许多数据库的容器都需要用到,这个后边会再详述。
Docker 中的一些概念的更多相关文章
- Docker系列(2)- Docker中的名词概念
Docker工作流程 名词概念 镜像(image): docker镜像就好比一个模板,可以通过这个模板来创建容器服务,tomcat镜像===>run===>tomcat01(提供服务器) ...
- 『现学现忘』Docker基础 — 16、Docker中的基本概念和底层原理
目录 1.Docker的底层原理 2.Docker中常用的基本概念 3.run命令的运行流程 4.为什么Docker比VM快 Docker架构图: 我们依照Docker架构图进行Docker基础概念的 ...
- 在docker中运行ASP.NET Core Web API应用程序
本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...
- Calico在Docker中的搭建
一,Multi-host网络需求 开始之前推荐两篇文章 http://xelatex.github.io/2015/11/15/Battlefield-Calico-Flannel-Weave-and ...
- docker中运行ASP.NET Core Web API
在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...
- docker中管理数据
到目前我们介绍了一些Docker的基础概念, 知道了如何使用Docker的image, 也知道了如何在多个container间通过网络通讯. 在这章里我们将介绍如何在docker的container内 ...
- docker镜像与容器概念
本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(containe ...
- [转]Docker中的镜像
引言 这篇文章中我们主要来探讨下Docker镜像,它是用来启动容器的构建基石,本文的所用到的Dcoker版本是17.1,API版本是1.33,Go的版本是1.9.2,OS是基于Arch Linux的M ...
- Docker学习之基本概念
Docker学习之基本概念 作为一个后端noder,不了解docker有点说不过去,这节开始,学习一些docker层面的东西. 什么是docker Docker最初是dotCloud公司创始人Solo ...
随机推荐
- 初学JVM
最近在读周志明的<深入理解Java虚拟机:JVM高级特性与最佳实践>,从中学到了很多,有些人可能会问为什么我们要学习JVM,他有什么用?在这里我想说一下,并不是这本书是大家都推荐的说有用处 ...
- iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)
今天博客中,我们就来实现一下一些常用资讯类App中常用的分类选择的控件的封装.本篇博客中没有使用到什么新的技术点,如果非得说用到了什么新的技术点的话,那么勉强的说,用到了一些iOS9以后UIColle ...
- CI 数据库使用积累
CI 数据库使用积累 一. or_like使用 情景:WMS库存列表过滤器通过产品名称或者SKU查询. 通常此情况采用CI框架提供的or_like语句,如 $this->db-> ...
- webpack实用配置
前面的话 上文介绍了webpack入门,本文将详细介绍webpack实用配置 版本号 以entry.js打包为bundle.js为例,出口的filename可以设置为[id].[name].[hash ...
- Caused by: java.lang.RuntimeException: by java.lang.OutOfMemoryError: PermGen space(tomcat 启动时提示内存溢出)
设置MaxPermSize大小TOMCAT_HOME/bin/catalina.bat 文件头加set JAVA_OPTS='-Xms512m -Xmx1024m -XX:MaxPermSize=51 ...
- ionic中应用sass
在学习ionic过程中看到sass,总结了一下基本用法和问题解决办法1.首先需要一个ionic项目,并执行下面的命令ionic start CustomSass blank && cd ...
- [USACO15JAN]电影移动Moovie Mooving
[USACO15JAN]电影移动Moovie Mooving 时间限制: 2 Sec 内存限制: 128 MB 题目描述 Bessie is out at the movies. Being mis ...
- int a=1,b=~a;请问b的值是多少?
int a=1,b=~a; 首先计算机中存储的是二进制补码. 把1转为二进制:0000 0001 ->反码 0000 0001 ->补码 0000 0001 ->取反 11 ...
- Redis 内存管理与事件处理
1 Redis内存管理 Redis内存管理相关文件为zmalloc.c/zmalloc.h,其只是对C中内存管理函数做了简单的封装,屏蔽了底层平台的差异,并增加了内存使用情况统计的功能. void * ...
- Android如何实现定位获取
一:GPS定位: (1).要实用Adnroid平台的GPS设备,首先需要添加上权限,所以需要添加如下权限: uses-permission android:name= android.permissi ...