Docker简介
docker诞生于2013年初,是dotCloud公司发布的一款轻量级的、开源的Linux应用容器引擎,它基于go语言实现,并且允许开发者将应用及其依赖打包到一个可移植的镜像中,它使得测试与部署比以往任何时候都要快速简单,docker的出现有效的解决了在微服务的架构下,服务粒度细,服务数量多所导致的开发环境搭建,部署和运维成本高的问题.
如上图中的docker图标,这只托着许多集装箱的鲸鱼就相当于一个docker引擎,上面的集装箱则相当于相互隔离的docker容器,每个容器中都运行着自己的应用程序.
Docker与传统虚拟机的区别
docker的技术架构:
传统虚拟机的技术架构:
两者的主要区别是:
- docker容器可以在秒级启动,传统的虚拟机启动一般为分钟级.
- docker容器基于进程隔离,且共享操作系统内核,占用空间非常小,一般为M级别,虚拟机是在物理硬件层面上的虚拟化,每个虚拟机必须包含一整套操作系统,应用程序和依赖库等,占用空间一般为G级别.
- docker容器对系统资源的利用率很高,单机可启动上千个docker容器,而虚拟机需要模拟硬件与网络资源,会占用大量系统开销,单机一般最多只能启动几十个虚拟机.
Docker的架构
docker使用c/s架构,client 通过接口与server进程通信实现容器的构建,运行和发布.client和server可以运行在同一台集群,也可以通过跨主机实现远程通信.
docker的几个核心概念:
- docker引擎(Docker Engine)
docker引擎即运行在宿主机(DOCKER_HOST)上的一个后台进程,也称为Docker Daemon,其本质上就是一个服务,只要启动该服务就可以通过docker客户端发送相关的命令与引擎通讯了. - docker客户端
docker客户端是和后台服务交互的主要工具,客户端有两种,一种是命令行工具,输入docker命令后,后台服务就能执行该命令了,另一种是REST API,一般在应用程序中我们使用REST API来与docker引擎交互. - docker镜像(Docker Image)
镜像是只读的指令模板,用于创建docker容器,与系统光盘有点类似,用户可以构建镜像或下载使用其他人构建的镜像,我们只需读取镜像便能将其载入docker引擎中,并启动一个容器运行镜像中的程序. - docker容器
docker容器是docker镜像的可运行实例,当我们获取到镜像后,可随时运行该镜像,此时便会启动一个docker容器,容器中将运行镜像中的应用程序,用户可以使用docker api或者命令行来运行、启动、停止、移动或删除容器,运行容器时可以提供配置元数据,例如网络信息或环境变量,容器是一个隔离安全的应用程序平台,但可以访问在不同主机或容器中运行的资源,以及持久存储或数据库. - docker镜像注册中心(Docker Registry)
docker官方提供了一个Docker Hub的镜像注册中心,用于存放公开的和私有的镜像仓库(Docker Respository),当然我们也可以在本地局域网搭建自己的注册中心,当用户使用docker pull或者docker run时就会从注册中心中下载镜像,当使用push时就会推送我们的镜像到镜像中心去.
Docker的安装使用
docker官方建议将docker安装运行在linux系统上,在linux系统上可以直接运行docker引擎,在mac osx或者windows系统上需要通过linux vm才能运行docker 引擎.,我们在本地centos7.3上安装docker,且必须同时满足CPU为64位,Linux内核版本为3.10以上.
安装步骤:
1.执行yum update 更新yum包安装最新的docker.
2.添加yum的docker仓库包
3.安装docker引擎
4.启动docker
5.查看docker版本
6.使用docker国内镜像
下面来看看两个docker的简单使用
运行docker自带的hello world程序
以后台模式在80端口启动nginx服务
打开浏览器输入http://192.168.56.101可以看到