Doker容器技术

Docker简介

Docker 是一个开源的应用容器引擎,让开发者能够打包他们的应用以及依赖包到一个可移植的镜像中,而后发布到任何流行的不一样操做系统(linux、Windows)机器上,也能够实现虚拟化。容器是彻底使用沙箱机制,相互之间不会有任何接口。
Containers 与 VMs相比
image.pngimage.pnglinux

Docker特色

  • 灵活:即便是最复杂的应用也能够集装箱化。
  • 轻量级:容器利用并共享主机内核。
  • 可互换:即时部署更新和升级。
  • 便携式:在本地构建,部署到云,并在任何地方运行。
  • 可扩展:增长并自动分发容器副本。
  • 可堆叠:垂直和即时堆叠服务。

Docker主要模块

Docker主要由三部分组成:镜像Image、容器Container、仓库Repository
各个模块以下:golang

Docker Client

docker client 是docker架构中用户用来和docker daemon创建通讯的客户端,用户使用的可执行文件为docker,经过docker命令行工具能够发起众多管理container的请求。docker

  • docker client能够经过一下三种方式和docker daemon创建通讯:
tcp://host:port;
unix:path_to_socket;
fd://socketfd。
  • docker client能够经过设置命令行flag参数的形式设置安全传输层协议(TLS)的有关参数,保证传输的安全性。
  • docker client发送容器管理请求后,由docker daemon接受并处理请求,当docker client 接收到返回的请求相应并简单处理后,docker client 一次完整的生命周期就结束了,当须要继续发送容器管理请求时,用户必须再次经过docker能够执行文件建立docker client。
Docker server

docker server在docker架构中时专门服务于docker client的server,该server的功能是:接受并调度分发docker client发送的请求,架构图以下:
imageapi

  • 在Docker的启动过程当中,经过包gorilla/mux(golang的类库解析),建立了一个mux.Router,提供请求的路由功能。在Golang中,gorilla/mux是一个强大的URL路由器以及调度分发器。该mux.Router中添加了众多的路由项,每个路由项由HTTP请求方法(PUT、POST、GET或DELETE)、URL、Handler三部分组成。
  • 若Docker Client经过HTTP的形式访问Docker Daemon,建立完mux.Router以后,Docker将Server的监听地址以及mux.Router做为参数,建立一个httpSrv=http.Server{},最终执行httpSrv.Serve()为请求服务。
  • 在Server的服务过程当中,Server在listener上接受Docker Client的访问请求,并建立一个全新的goroutine来服务该请求。在goroutine中,首先读取请求内容,而后作解析工做,接着找到相应的路由项,随后调用相应的Handler来处理该请求,最后Handler处理完请求以后回复该请求。
  • Docker Server的运行在Docker的启动过程当中,是靠一个名为”serveapi”的job的运行来完成的。原则上,Docker Server的运行是众多job中的一个,可是为了强调Docker Server的重要性以及为后续job服务的重要特性,将该”serveapi”的job单独抽离出来分析,理解为Docker Server。
Engine
Job
Docker Daemon
Docker Registry
Graph
Driver
libcontainer
Docker container

安装Docker

最简单方式,即便用阿里云一键安装脚本:安全

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker
systemctl enable docker
docker version

Docker中的镜像管理

搜索镜像:bash

docker search

获取镜像:网络

docker pull

查看镜像:架构

docker images

删除镜像:curl

docker rmi

Docker中的容器管理

启动容器:socket

docker run –-name –h hostname

中止容器:

docker stop CONTAINER ID

查看容器:

docker ps

进入容器:

docker exec | docker attach

删除容器:

docker rm

Docker中对网络进行访问

随机映射:

docker run -P

指定映射:

-p hostPort:containerPort 
-p ip:hostPort:containerPort 
-p ip::containerPort 
-p hostPort:containerPort 
-p hostPort:containerPort
相关文章
相关标签/搜索