虚拟化技术:容器(应用层)、虚拟机(软件层)
docker:隔离,镜像占用资源小,秒级 vm:GB级
docker基于Go语言开发的
图1 架构图
镜像(image):
docker镜像就像一个模板,例如:redis镜像》run》redis容器(对外提供服务)
一个镜像可以创建多个容器!!!
容器(container):
利用容器技术独立运行一个或者一组应用,通过镜像创建
启动、停止、删除
仓库(repository):类似github、gitlab代码仓库
存放镜像的地方:公有仓库和私有仓库
图2 查看自己的服务器内核情况
图3 通过数据库
# 1,先删除老版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 2,设置仓库 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release # 3,直接进入阿里云docker加速镜像设置国内的镜像地址(https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors) sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://g8kfoxhi.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker # 4,安装docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 5,查看是否安装成功(执行hello-world程序) docker search hello-world docker pull hello-world docker run hello-world # 其他 docker的资源路径 /var/lib/docker # 如果想要协助该资源则可以直接 rm -rf /var/lib/docker
图4 docker镜像启动流程
docker是怎么工作?
docker是一个Client-Server结构的系统,docker的守护进程运行在主机上。通过socket从客户端访问!
图5 docker底层
docker为什么比虚拟机快?
1,docker只在应用层进行抽象
2,docker(秒级别)利用的是宿主机的内核,vm(分钟级别)需要Guest OS
所以说,新建一个容器的时候,docker不需要像虚拟机那样重新加载一个操作系统内核,避免引导!
图6 虚拟机与docker架构区别
图7 docker与虚拟机的性能差异
备注:当前docker也支持全平台
帮助命令
docker version # 显示版本 docker info # 系统信息 docker [命令] --help # 帮忙命令
镜像命令
docker images # 查看所有镜像 REPOSITORY
搜索
docker search [namelike] Options: -f, --filter filter Filter output based on conditions provided --format string Pretty-print search using a Go template --limit int Max number of search results (default 25) --no-trunc Don't truncate output
下载
docker pull [name] # 如果不写tag,默认就是latest Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST] Pull an image or a repository from a registry Options: -a, --all-tags Download all tagged images in the repository --disable-content-trust Skip image verification (default true) --platform string Set platform if server is multi-platform capable -q, --quiet Suppress verbose output 例如: docker pull mysql docker pull docker.io/library/mysql:latest # 等价
删除镜像
docker rmi -f ${docker images -qa} # 删除所有 docker rmi -f [镜像id 镜像id ...] # 删除单个或多个
参考链接:
https://docs.docker.com/get-started/overview/
遇见狂神说-b站视频