目录
Docker是什么?
官方翻译:
Docker
是一个用于开发,交付和运行应用程序的开放平台。Docker
将应用程序与基础架构分开,从而可以快速交付软件。 通过利用Docker
的快速交付,测试和部署代码的方法,可以大大减少编写代码和在生产环境中运行代码之间的延迟。
其实,Docker
就是实现了一个快速轻量的虚拟机操作系统的解决方案,打包了app
的的运行时环境,跑起来就是一个主机上的一个隔离的进程应用。这个运行时环境包括运行的二进制文件、系统环境、配置文件三个方面。一旦我们创建好应用,就能在任何地方部署和运行起来,方便快速交付和部署。Docker
用tag
来标识不同版本的应用发布,结合git
等版本管理工具,和Devops
的流水线pipelines
,非常适合持续集成(CI
)和持续开发(CD
)。
顺带一提,CI
的作用是产生可以部署的工件, 其中自动化测试的作用是验证给定版本代码的工件是否可以安全部署。CD
将代码从源存储库迁移到生产的整个过程是完全自动化的。
docker基本概念
docker是容器技术的一个前端工具,容器是内核的一项技术,docker只是把这一项技术的使用得以简化,使之普及而已。
LXC进行大规模创建容器很难,想在另一台主机上复刻一个一模一样的容器也很难,而docker就是从这方面着手去找解决方案。所以docker早期的版本其核心就是一个LXC,docker对其进行了二次封装,功能的实现是通过LXC做容器管理引擎,但是在创建容器时,不再是像LXC一样用模板去现场安装,而是事先通过一种类似镜像技术,就像在KVM中一样,将一个操作系统打包成一个镜像,然后将这个镜像拷贝到目标主机上直接部署启动。
我们可以尝试着把一个操作系统用户空间需要用到的所有组件,事先准备、编排好,编排好以后整体打包成一个文件,这个文件我们称其为镜像文件(image)。
docker的镜像文件是放在一个集中统一的互联网仓库中的,把一些人们常用的镜像文件放在互联网仓库中,比如最小化的centos系统,有时我们需要在操作系统上安装一些应用,比如nginx,我们就可以在一个最小化的centos系统中安装一个nginx,然后将其打包成镜像,将其放在互联网仓库中,当人们想启动一个容器的时候,docker会到这个互联网仓库中去下载我们需要的镜像到本地,并基于镜像来启动容器。
自docker 0.9版本起,docker除了继续支持LXC外,还开始引入自家的libcontainer,试图打造更通用的底层容器虚拟化库。如今的docker基本上都已经是使用libcontainer而非LXC了。
从操作系统功能上看,docker底层依赖的核心技术主要包括Linux操作系统的命名空间、控制组、联合文件系统和Linux虚拟网络支持。
docker架构
Docker遵循客户端 - 服务器架构。 其架构主要分为三个部分。
客户端(Client):DDocker 客户端通过命令行或者其他工具使用 Docker API与 Docker 的守护进程通信。Docker_Host:一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。Registry:Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker的发展简史
docker镜像与镜像仓库
为什么镜像仓库名字是Registry而不是repository? 简单来说, Registry :注册服务器,用于管理 镜像 仓库,起到的是服务器的作用。 Repository : 镜像 仓库,用于存储具体的 docker镜像 ,起到的是仓库存储作用。
镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的。
安装及使用docker
安装docker
cd /etc/yum.repos.d/
curl -o docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo
yum -y install docker-ce
配置docker加速
docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。
docker加速有多种方式:
1、docker cn
2、中国科技大学加速器
3、阿里云加速器(需要通过阿里云开发者平台注册帐号,免费使用个人私有的加速器)
阿里云加速方法:
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://22aw5slm.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker操作命令
命令 | 功能 |
---|---|
docker search | 在Docker Hub中搜索图像 |
docker pull | 从注册表中提取图像或存储库 |
docker images | 图像列表 |
docker create | 创建一个新的容器 |
docker start | 启动一个或多个停止的容器 |
docker run | 在新容器中运行命令 |
docker attach | 连接到正在运行的容器 |
docker ps | 容器列表 |
docker logs | 获取容器的日志 |
docker restart | 重新启动容器 |
docker stop | 停止一个或多个正在运行的容器 |
docker kill | 杀死一个或多个正在运行的容器 |
docker rm | 卸下一个或多个容器 |
docker exec | 在正在运行的容器中运行命令 |
docker info | 显示系统范围的信息 |
docker inspect | 返回有关Docker对象的低级信息 |