保姆级(完整详细版) 教你如何搭建docker
docker概念入门
docker是一款全球流行的容器管理工具,可以暂时理解为一种将程序打包的一种技术。
在linux系统中,一切接文件,运行任何程序仅包含程序本身及其依赖库, docker可以实现将这程序和依赖库文件进行打包,便于快速部署服务,迁移等场景。
docker架构简介
- client 客户端
- docker daemon 服务端
- image 镜像文件
- container 容器
- registry 远程仓库 存储的是镜像
虚拟机和容器技术对比
- 从启动速度速度和部署时间
虚拟机有开机启动流程,而容器没有此过程,因此速度快。
- 运行性能对比
- 虚拟机的CPU,内存,磁盘都是虚拟的,在程序运行时虚拟机的程序会将指令给到虚拟的CPU,而VVM程序需要将其翻译为宿主机能够识别的指令,因此此过程会造成一定的性能消耗。
- 容器技术并不会虚拟CPU,内存,而是直接使用宿主机的内核,因此性能更高。
- 资源消耗对比
-
- 虚拟机需要安装单独的VVM程序,而后基于VVM创建虚拟机,VVM本身会占用一定的资源消耗。
- 而容器技术并不需要过多资源消耗,更加轻量级,一套服务器如何能创建10台虚拟机,那么基本上容器技术实现可以创建100台+容器。
- 数据迁移
-
- 从数据迁移角度来说,虚拟机迁移时需要将现有的业务在新的环境中重新部署,比如将测试环境迁移到生产环境,可能此过程较长,可能需要几个小时,甚至几天?
- 而容器技术本身是一种”打包程序”的技术,因此迁移时并不需要部署服务,直接导入镜像启动容器即可。此过程秒级启动。
- 虚拟机本身的迁移
-
- 一个虚拟机本身是一个操作系统,需要安装特定服务软件(vim,yum,apt,…),因此体积较大,可能上GB+。
- 而容器技术本事只是针对性的对”程序文件”进行打包,因此较小,甚至能够小于1MB。
docker下载地址(二进制安装方式)
下载系统对应的版本
https://download.docker.com/linux/static/stable/
本次安装以docker-20.10.6.tgz为例。
docker-rootless-extras-20.10.6.tgz (非root运行则需要选择该版本下载)
解压二进制压缩包
tar xzvf docker-20.10.6.tgz -C /usr/bin/
启动 docker服务
dockerd
-
- 如果想通过systemctl来管理启动
# /lib/systemd/system/docker.service
[Unit]
Description=ilovclara
Documentation=https://docs.docker.com
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd[Install]
WantedBy=multi-user.target#重新加载配置文件
systemctl daemon-reload
#重启服务
systemctl restart docker
docker配置文件路径
/etc/docker/daemon.json
-
- 如果想进行配置文件的优化 (优化后别忘记重启docker哟)
- 如果想进行配置文件的优化 (优化后别忘记重启docker哟)
1.日志优化
{
“log-level”: “info”,
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “10m”,
“max-file”: “3”
}
}
2.配置镜像加速
{
“storage-driver”: “overlay2”,
“registry-mirrors”: [“https://<your-mirror-address>.com”]
}
3.使用自定义网络
{
“bridge”: “none”,
“networks”: {
“my-network”: {
“driver”: “bridge”,
“ipam”: {
“driver”: “default”,
“config”: [
{
“subnet”: “172.18.0.0/16”
}
]
}
}
}
}
4.调整资源限制
{
“default-runtime”: “runc”,
“runtimes”: {
“runc”: {
“path”: “runc”
}
}
}
5.使用的 cgroup 驱动
{
“exec-opts”: [“native.cgroupdriver=systemd”]
}
docker测试拉取镜像
docker run hello-world
查看拉取后的结果
docker images | grep hello-world