Docker 是一种开源的应用容器引擎,它允许开发人员将应用及其依赖项打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。
Docker 的主要优势包括:
-
轻量级虚拟化:与传统的虚拟机相比,Docker 容器不需要运行完整的操作系统,因此启动更快,占用资源更少。
-
可移植性:Docker 容器可以在任何安装了 Docker 的系统上运行,无论是开发、测试还是生产环境,都能保持一致性。
-
隔离性:每个 Docker 容器都是独立的,它们运行在自己的文件系统中,不会相互干扰。
-
可扩展性:Docker 支持容器的横向扩展,可以通过运行多个容器实例来扩展应用。
-
版本控制和协作:Docker 镜像(Images)可以看作是容器的蓝图,它们可以通过 Docker Hub 或私有仓库进行分享和版本控制,便于团队协作。
-
自动化:Docker 可以与各种自动化工具集成,如 Kubernetes、Docker Compose 等,实现复杂的应用部署和管理。
Docker 的使用场景非常广泛,包括但不限于:
- 开发和测试环境的一致性:确保开发、测试和生产环境的一致性,减少“在我的机器上可以运行”的问题。
- 微服务架构:每个微服务可以打包在独立的容器中,便于管理和扩展。
- 持续集成/持续部署(CI/CD):Docker 可以与 Jenkins、GitLab CI 等工具集成,实现自动化的构建、测试和部署流程。
- 弹性云部署:Docker 容器可以在云服务提供商(如 AWS、Azure、Google Cloud 等)上轻松部署和管理。
Docker 的出现极大地简化了应用的打包、分发和运行过程,已经成为现代软件开发和运维中不可或缺的工具之一。
Docker 与传统虚拟机技术相比,具有以下几个主要优势:
1. 资源消耗:Docker 容器直接运行在宿主机的操作系统上,共享宿主机的内核,而不需要额外的操作系统。相比之下,传统虚拟机为每个虚拟机实例提供了完整的操作系统副本,因此资源消耗较大。
2. 启动速度:由于 Docker 容器不需要启动完整的操作系统,它们可以在几秒钟内启动,而传统虚拟机通常需要几分钟来启动。
3. 性能:Docker 容器的性能接近于在宿主机上直接运行应用,因为它们减少了虚拟化层的开销。传统虚拟机由于需要模拟硬件和运行完整的操作系统,性能可能会有所下降。
4. 隔离性:Docker 容器提供了良好的隔离性,每个容器都有自己的文件系统、进程空间和网络接口,但它们之间是轻量级的隔离。传统虚拟机则提供了更强的隔离性,因为每个虚拟机都是独立的操作系统实例。
5. 可移植性:Docker 容器可以在任何安装了 Docker 的系统上运行,无论是物理机还是云服务器,都能保持一致的运行环境。传统虚拟机可能需要针对不同的宿主机进行配置调整。
6. 版本控制和协作:Docker 镜像可以轻松地进行版本控制和分享,这使得团队协作和部署管理变得更加简单。传统虚拟机通常没有这样便捷的版本控制和分享机制。
7. 自动化和编排:Docker 与自动化工具(如 Docker Compose、Kubernetes)的集成非常紧密,可以轻松实现复杂的应用编排和自动化部署。传统虚拟机虽然也有相应的管理工具,但通常不如 Docker 那样灵活和高效。
8. 轻量级:Docker 容器的大小通常只有几十到几百兆字节,而传统虚拟机的磁盘映像可能达到几十个吉字节,这使得 Docker 容器在存储和传输上更加高效。
总的来说,Docker 提供了一种更加轻量级、快速和灵活的方式来打包和运行应用,尤其适合微服务架构、持续集成/持续部署(CI/CD)以及云原生应用的开发和部署。
在Linux中装docker
首先确保是CentoS7及以上版本
使用yum 安装gcc
yum -y install gcc
yum -y install gcc-c++
gcc
是 GNU Compiler Collection(GNU 编译器套件)的缩写,它是一个由 GNU 项目开发的编译器,用于编译 C、C++、Objective-C、Fortran、Ada 和 Go 等多种编程语言的源代码。gcc
是 Linux 和其他类 Unix 系统中最常用的编译器之一
安装需要的软件包
yum install -y yum-utils
设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
安装docker ce
yum -y install docker-ce docker-ce-cli containerd.io
启动
systemctl start docker
测试是否安装成功
docker version
显示这些就是安装成功了