早期版本的Docker底层是基于成熟的LXC实现的,自Docker 0.9开始,Docker还引入libcontainer。
Docker底层依赖的核心技术主要包括:命名空间(Namespaces)、控制组(Control Groups)、联合文件系统(Union File System)、虚拟网络支持。
Docker采用C/S架构,客户端和服务端可以运行在一个机器,也可以通过socket或RESTful API进行通信。
Docker服务端
Docker daemon一般在宿主主机后台运行,作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。
Docker服务端默认监听本地的unix:///var/run/docker.sock
套接字,只允许本地的root用户访问。
可以通过-H选项修改监听方式,如监听本地的1234端口
docker -H 0.0.0.0:1234 -d &
Docker客户端
Docker客户端为用户提供一系列的可执行命令,客户端默认通过本地的unix:///var/run/docker.sock
套接字向服务端发送命令。
如果修改了服务端的监听端口,则需要配置-H参数指定连接
docker -H tcp://127.0.0.1:1234 version