一、Docker概述
1、Docker为什么会出现?
发布项目的时候,带上环境一起发布,而不是只有一个jar包。
Docker就是能够是项目在发布的时候,带上环境一起发布,比如:( jar+(Redis,ES,Hadoop…))
现在:开发打包部署上线,一套流程做完。
Docker的解决流程:
Java — jar(环境)— 打包项目带上环境(镜像)— (Docker仓库:商店)— 下载我们发布的镜像 — 直接运行即可。
Docker思想:通过隔离机制,提供服务器的利用率。
Docker:相对于虚拟机来来说,十分的轻巧,只有一些最核心的环境。
Docker:是基于Go语言开发的。
2、Docker能干嘛?
容器化技术:不是一个完整的操作系统。容器包括运行环境和应用,是直接运行在操作系统之上,可以充分的利用操作系统的资源。
比较虚拟机技术与Docker的不同:
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
- Docker,容器内的应用直接运行在宿主机上,容器没有自己的内核,也没有虚拟我们的硬件,所以较为轻便。且每个容器之间是相互隔离的。
3、DevOps(开发、运维)
应用更快速的交付和部署
传统:一堆帮助文档,安装程序
Docker:一键运行,打包镜像,发布测试
更便捷的升级和扩缩容
使用Docker之后,我们的部署就像搭积木一样
项目打包为一个镜像,扩展服务器
更简单的系统运维
在容器化之后,我们的开发测试环境都是高度一致的
更高效的计算资源利用
Docker是内核级别的虚拟化,可以在一个物理机上面运行很多容器实例
二、Docker的安装
1、Docker的基本组成
镜像:Docker镜像就好比一个模板,可以通过这个模板来创建容器服务。tomcat镜像–》run–>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务器运行或者项目运行就在容器中的)。
容器:Docker利用容器技术,独立运行一个或一组应用,通过镜像来创建。可以把这个容器理解为一个简单的linux系统。
仓库:存放镜像的地方。分为共有仓库和私有仓库。
2、Docker的安装(Ubuntu)
安装官方最新版本Docker:
先卸载旧版本:
sudo apt-get remove docker docker-engine docker.io containerd runc
升级apk工具以支持https库:
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
添加官方的GPG秘钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
安装Docker:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
安装成功后查看版本:
docker -v
验证安装状态:
sudo docker run hello-world
查看一下这个hello world镜像:
docker images
3、Docker的卸载
卸载依赖:
sudo apt-get purge docker-ce docker-ce-cli containerd.io
删除资源:
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
其中/var/lib/docker
是Docker默认的工作路径
三、Run流程和Docker原理
1、Docker底层原理
Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上面,通过Socket从客户端访问。
DockerServer接受到Docker-Client的指令,就会执行这个命令。
Docker为什么比VM快?
1、Docker有着比虚拟机更少的抽象层
2、docker利用的是宿主机的内核,VM需要的是Guest OS。
因此新建一个容器的时候,docker不需要向虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS,分钟级别,而docker是秒级的。