docker使用Google推出的Go语言开发,基于linux的cgroup(cgroup将应用程序限制为特定的资源集,允许Docker Engine将可用的硬件资源共享给容器,并可选择强制执行限制和约束),namespace(运行容器时,Docker会为该容器创建一组 名称空间。这些命名空间提供了一层隔离,容器的每个方面都在一个单独的命名空间中运行,其访问权限仅限于该命名空间),联合文件系统UnionFS以及变体AUFS等技术。对进程进行封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主和其它的隔离的进程,因此也称之为容器。
Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件外,还包含为运行时准备的一些配置参数(如匿名卷、环境变量、用户等),Docker镜像不包含任何动态数据,其内容在构建后不会被改变,它是创建容器的模板。由于镜像包含操作系统完整的root文件系统,其体积一般很庞大,因此Docker设计时设计为分层存储的架构。镜像只是一个虚拟概念,其实际体现并非由一个文件组成,而是由多层文件系统联合组成。
Docker容器是镜像的运行时实例,适用于基于Linux和Windows的应用程序,无论基础架构如何,容器化软件都将始终运行相同。容器将软件与其环境隔离开来,并确保它可以统一运行。每一个容器运行时是以镜像为基础层在其上创建一个当前容器的存储层,可以称为容器存储层。容器存储层的生存周期和容器一样,随着容器的消亡而消亡。因此任何保存于容器存储层的信息都会随容器删除而丢失。按照Docker最佳实践的要求,容器不应该向其存储层写入任何数据,应该使用volume数据卷或绑定宿主目录,这样性能和稳定性更高。
Docker仓库是一个集中存储、分发镜像的服务,Docker Registry就是这样的服务。一个Docker Registry可以包含多个仓库(Repository),每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。一个仓库通常包含同一软件不同版本的镜像,可以通过<仓库名>:<标签>指定镜像的版本。如果不给出标签,默认标签为latest。
Docker 架构
Docker使用客户端 - 服务器(C/S)架构,使用远程API管理和创建Docker 容器。Docker 客户端与Docker 守护进程通信,后者负责构建,运行和分发Docker容器。Docker客户端和守护进程可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护进程。Docker客户端和守护进程使用REST API,通过UNIX套接字或网络接口进行通信。
Client
客户端通过命令行或其他工具与守护进程通信,客户端会将这些命令发送给守护进程,然后执行这些命令。命令使用Docker API,Docker客户端可以与多个守护进程通信。
Docker daemon
Docker守护进程(docker daemon)监听Docker API请求并管理Docker对象,如镜像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
Docker Host
Docker Host是物理机或虚拟机,用于执行Docker守护进程的仓库。
Docker Registry
Docker仓库用于存储Docker镜像,可以是Docker Hub这种公共仓库,也可以是个人搭建的私有仓库。使用docker pull或docker run命令时,将从配置的仓库中提取所需的镜像。使用docker push命令时,镜像将被推送到配置的仓库。
使用的环境ubuntu19.04
1.如果安装过先删除老的版本(可忽略)
sudo apt-get remove docker docker-engine docker.io containerd runc
2.更新软件包
sudo apt-get update/sudo apt update
3.安装需要的包( HTTPS 传输的软件包, CA 证书等)
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
4.添加 GPG 密钥并添加 Docker-ce 软件源
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证是否添加成功(可忽略)
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5.添加成功后更新软件包缓存
sudo apt-get update
6.安装docker
sudo apt-get install docker-ce
cd /etc/apt/sources.list.d
sudo vi docker.list
添加内容
deb https://download.docker.com/linux/ubuntu zesty edge
7.验证
查看是否启动
systemctl status docker
sudo docker run hello-world
8.查看正在运行的容器
sudo docker ps -ls
9.查看镜像
sudo docker images
10.创建docker用户组避免使用sudo
sudo usermod -aG docker your-user
以上为ubuntu环境下docker安装相关
参考文档
https://docs.docker.com/engine/docker-overview/#docker-architecture
https://docs.docker.com/install/linux/docker-ce/ubuntu/