“Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人。据说改名让它集得2亿多融资,市值翻了好几倍——论起名的重要性

docker运行指定tag的镜像 docker启动镜像指定端口_Docker


docker是开源代码软件项目,利用 Linux 核心中的资源分脱机制,例如 cgroups,以及 Linux 核心名字空间(name space),来创建独立的软件容器(containers),属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。

docker由几部分组成:

docker优点与缺点:

优点:

1、模块化

2、层和镜像版本控制

3、回滚

4、快速部署

缺点:

1、不适用多容器


docker与虚拟机的区别:

docker运行指定tag的镜像 docker启动镜像指定端口_Docker_02

虚拟机——传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

docker——容器技术和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。容器内没有自己的内核,也没有进行硬件虚拟。

docker运行指定tag的镜像 docker启动镜像指定端口_Docker_03

docker相比虚拟机:

1.更快启动速度

2.更高效的资源利用率

3.更高的系统支持量

4.持续交付与部署

5.更轻松的迁移/维护与扩展

6.更弱的隔离性和安全性


docker的几个核心概念

1、镜像:特殊的文件系统。除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

2、容器:实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间容器可以被。创建、启动、停止、删除和暂停等等,说到镜像与容器之间的关系,可以类比面向对象程序设计中的类和实例

3、仓库:镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库;每个仓库可以包含多个标签;每个标签对应一个镜像,其中标签可以理解为镜像的版本号。


如何获取镜像?

Docker Hub 上有大量优秀的镜像,下面先来说说如何获取镜像。和 git 类似,docker 也使用 pull 命令,其格式如下:

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签

       其中 Docker 镜像仓库地址若不写则默认为 Docker Hub,而仓库名是两段式名称,即 /。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。

Docker 镜像还有一些常用操作,比如:

docker image ls - 列出本地已下载镜像docker image rm [选项]  [ ...] - 删除镜像docker logs  - 查看容器日志docker ps - 列出当前所有正在运行的容器docker ps -l - 列出最近一次启动的容器docker search image_name - 从 Docker Hub 检索镜像docker history image_name - 显示镜像历史docker push new_image_name - 发布镜像