Docker简介
docker是一个程序运行、测试、交付的开放平台,Docker被设计为能够使你快速地交付应用。在Docker中,你可以将你的程序分为不同的 基础部分,对于每一个基础部分都可以当做一个应用程序来管理。Docker能够帮助你快速地测试、快速地编码、快速地交付,并且缩短你从编码到运行应用的 周期。此外,在我看来,docker并不仅仅是一门技术,也是在定义一种软件交付的标准,而加快软件交付周期就是其主要价值。Docker的主要特性
- 文件系统隔离:每个进程容器运行在完全独立的根文件系统里
- 资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存
- 网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址
- 写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间
- 日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索
- 变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置
- 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上
Docker的技术架构
Docker技术采用C/S架构,我们使用Docker Client与Docker Daemon建立通信,并发送请求给后者。Docker Daemon作为Docker架构中的主体部分,首先提供Server的功能使其可以接受Docker Client的请求;而后Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在。
Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动graphdriver将下载镜像以Graph的形式存储;当需要为Docker创建网络环境时,通过网络管理驱动networkdriver创建并配置Docker容器网络环境;当需要限制Docker容器运行资源或执行用户指令等操作时,则通过execdriver来完成。而libcontainer是一项独立的容器管理包,networkdriver以及execdriver都是通过libcontainer来实现具体对容器进行的操作。
当执行完运行容器的命令后,一个实际的Docker容器就处于运行状态,该容器拥有独立的文件系统,独立并且安全的运行环境等。Docker环境搭建
Docker官方建议运行在linux内核为3.8及更高版本,所以本文将以centos7系统为例。
使用centos7新式 systemd 语法启动并检查docker服务:systemctl start docker.service systemctl enable docker.service
拉取ubuntu镜像
docker pull ubuntu
查看镜像列表
docker images
启动运行ubuntu镜像
docker run -it docker.io/ubuntu /bin/bash
这样就启动成功了一个容器,但注意是前台启动,exit后就退出了
Docker常用命令
查看所有的容器docker ps -a
使用exec进入容器交互环境
docker exec -it 39f9155fa3de /bin/bash
查看该容器日志
docker logs 39f9155fa3de
启动,停止,重启容器
docker start/stop/restart <containerID>
查看容器信息
docker inspect <containerID>
删除容器
docker rm <containerID>
删除镜像
docker rmi <imageID>
将容器的状态保存为镜像
docker commit <containerID> <自定义镜像名称>
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)
查找你需要的Docker镜像列表
docker search mysql
容器转换为文件
docker export <containerID> > /home/export.tar
镜像转换为文件
docker save <imageID> > /home/save.tar
文件转换为镜像
docker load < /home/save.tar
Docker简介与入门
最新推荐文章于 2024-04-25 16:18:57 发布