docker通用技术介绍

ops/2025/3/1 13:48:50/

docker_0">docker通用技术介绍

docker_2">1.docker介绍

1.1 基本概念

docker是一个开源的容器化平台,用于快速构建、打包、部署和运行应用程序。它通过容器化技术将应用及其依赖环境(如代码、库、系统工具等)打包成一个标准化、轻量级的独立单元,实现跨环境的一致性运行。

docker容器容器是一种轻量级虚拟化技术,docker是创建和管理容器的工具。

docker_10">1.2 docker的优势

1.环境一致性:开发、测试、生产环境使用相同镜像,避免“在我机器上能跑”的问题。

2.快速部署:秒级启动,支持自动化扩缩容(结合K8S)。

3.资源高效:无需模拟完整操作系统,节省计算资源。

4.隔离性:应用运行在独立沙箱,避免依赖冲突。

docker_20">1.3 docker与虚拟机对比

docker虚拟机
虚拟化层级操作系统级(共享主机内核)硬件级(通过Hypervisor辅助)
启动速度秒级分钟级
资源占用低(MB级内存)高(GB级内存)
隔离性进程级隔离(通过namespace和cgroups)硬件级隔离(完全独立的操作系统)
安全性共享内核,存在潜在攻击面完全隔离,虚拟机漏洞不影响宿主机
镜像大小镜像分层复用,MB级包含完整OS,GB级
应用场景云原生和微服务、快速部署强隔离需求(如安全敏感应用)

2.安装配置

yum install docker-ce
systemctl  enable docker;systemctl  start docker#配置docker源
echo "x.x.x.x socp.io" >>/etc/hostscat >>/etc/docker/daemon.json<<EOF
{"live-restore": true,"insecure-registries":["socp.io"],			#镜像仓库#"graph": "/mnt/data01/docker",				#存储路径"log-driver": "json-file",					#默认日志驱动"log-opts": {"max-size": "150m","max-file": "10"}
}
EOFsystemctl restart docker

3.镜像管理

docker镜像是一个分层存储的文件系统,每一层都是只读的,并且可以被多个镜像共享。

docker images
docker pull <image>
docker pull socp.io/grafana/grafana:8.3.11
docker push <image>
docker rmi <image>

1.overlay(或overlay2)是docker默认的联合文件系统(unionFS)驱动,用于管理容器和镜像的分层存储。

它通过将多个只读层(镜像层)和一个可写层(容器层)合并,为容器提供统一的文件系统视图。当启动容器时,docker会基于镜像的只读层创建一个可写层(overlay挂载点),容器内的所有文件修改都发生在这一层。

作用:分层存储、写时复制(copy-on-write)

2.shm(共享内存)

shm是linux的共享内存(shared memory)文件系统(类型为tmpfs),基于内存的临时存储。docker默认挂载一个64MB的/dev/shm共享内存分区,用于进程间通信或某些依赖共享内存的应用。

4.容器管理

docker run -d \
-p 3000:3000 \
--restart=unless-stopped \
socp.io/grafana/grafana:8.3.11docker stop <id>
docker exec -it <id> <cmd>
docker rm <id>

docker_92">5.docker网络

docker提供了多种网络驱动模式,支持灵活的网络配置,满足不同场景的需求。每个容器拥有独立的网络命名空间,隔离网络栈(IP、端口、路由表等)。

实际应用中需结合安全策略(如网络隔离、最小权限)和性能需求(如驱动选择)进行配置。

docker network ls
docker network inspect <id>

5.1 bridge网络(默认)

默认创建一个名为docker0的虚拟网桥,容器通过veth对连接到网桥。容器分配私有IP(172.17.0.0/16),宿主机通过NAT与外部通信。

适用于单机环境下容器间通信,或需要对外暴露服务的应用(如web服务器)。

5.2 host网络

容器直接共享宿主机的网络命名空间,使用宿主机IP和端口。无NAT或虚拟网桥,性能接近原生。

适用于需要极致网络性能的应用。

5.3 overlay网络

用于跨主机的容器通信。基于vxlan等隧道技术,封装容器流量并通过物理网络传输。

常用于微服务集群、K8S等容器编排平台。

5.4 none网络

容器不配置任何网络接口,仅保留lo回环地址。

完全隔离,适用于极端安全场景或自定义网络配置。

docker_127">6.docker数据管理

数据卷(volume)是实现持久化存储的主要方式,它允许容器与宿主机之间共享数据,并确保数据在容器删除后依然保留。默认存储在/var/lib/docker/volumes/

docker volume create <name>			#创建数据卷
docker volume ls					#列出数据卷
docker volume inspect <name>		#查看数据卷信息
docker volume rm <name>				#删除数据卷docker volume create grafana-data
docker run -d \
-p 3001:3000 \
--restart=unless-stopped \
-v grafana-data:/var/lib/grafana/ \
socp.io/grafana/grafana:8.3.11

除了数据卷,还可以直接将宿主机的目录挂载到容器(绑定挂载),路径由用户指定

mkdir -p /test/grafana/data
chmod -R 777 /test/grafana/data-v /test/grafana/data:/var/lib/grafana/

7.日志与监控

docker logs <id> -f --tail 50	#查看日志
docker stats 			#实时资源监控
docker top <id> 		#查看进程树
docker inspect <id>		#查看容器信息docker cp container:/path/in/container /path/on/host			#在容器和宿主机之间复制文件docker日志路径:/var/lib/docker/containers/
内部文件路径:/var/lib/docker/overlay2/
启动命令:Entrypointdocker system df -v		#查看docker磁盘使用情况
docker system prune		#清理未使用的资源
docker system info 		#查看docker系统信息
docker system events	#监控事件日志

常见问题

1.区分容器进程or宿主机进程

#检查父进程链
pstree -aps <pid>#docker进程会在cgroup中标记容器ID或docker相关路径:
cat /proc/<pid>/cgroup

培训题目

1.如何查看docker配置文件?

2.如何查看docker容器最新日志?

3.如何查看某docker容器占用资源大小?

4.给出一个进程号,如何判断该进程是否为容器内部进程?

5.如何清理未使用的docker资源?

6.请安装docker,并配置镜像仓库地址为socp.io,容器日志驱动为json-file,轮转日志文件单个最大10MB,保留5个副本。

7.启动一个名为grafana的容器,要求:后台运行,映射宿主机3000端口到容器3000端口;挂载宿主机目录/test/grafana/data到容器/var/lib/grafana/持久化存储;设置容器为自启。容器正常启动后,导出日志到/root目录下。


http://www.ppmy.cn/ops/162245.html

相关文章

自然语言处理NLP入门 -- 第八节OpenAI GPT 在 NLP 任务中的应用

在前面的学习中&#xff0c;我们已经了解了如何使用一些经典的方法和模型来处理自然语言任务&#xff0c;如文本分类、命名实体识别等。但当我们需要更强的语言生成能力时&#xff0c;往往会求助于更先进的预训练语言模型。OpenAI 旗下的 GPT 系列模型&#xff08;如 GPT-3、GP…

SQL 建表语句详解

SQL 建表语句详解 在 SQL 中&#xff0c;创建表&#xff08;Table&#xff09;是数据库设计的基础。表是存储数据的基本单位&#xff0c;每个表由行和列组成。创建表的过程涉及到定义表的结构&#xff0c;包括列名、数据类型、约束等。本文将详细介绍 SQL 中的建表语句&#x…

Spring 源码硬核解析系列专题(五):Spring Boot 自动装配的原理

在前四期及扩展篇中,我们深入探讨了 Spring 的 IoC 容器、Bean 创建、AOP 和事务管理,这些是 Spring 框架的基石。而 Spring Boot 作为 Spring 的进化版,通过自动装配大幅简化了开发流程。本篇将聚焦 Spring Boot 的自动装配机制,揭秘其如何通过源码实现“约定优于配置”的…

计算机毕业设计SpringBoot+Vue.js中小企业设备管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

redis小记

redis小记 下载redis sudo apt-get install redis-server redis基本命令 ubuntu16下的redis没有protected-mode属性&#xff0c;就算sudo启动&#xff0c;也不能往/var/spool/cron/crontabs写计划任务&#xff0c;感觉很安全 #连接到redis redis-cli -h 127.0.0.1 -p 6379 …

Spark RDD持久化机制深度解析

Spark RDD持久化机制深度解析 一、核心概念与价值 Spark RDD持久化&#xff08;Persistence&#xff09;是优化计算性能的核心技术&#xff0c;通过将中间结果存储在内存或磁盘中实现数据复用。其核心价值体现在&#xff1a; 加速迭代计算 机器学习等场景中&#xff0c;数据…

【保姆级教程】如何在azure里快速找到openai的key和demo

1.openai的 先在主页里找到 然后打开 然后点击左侧-聊天-选好要用的模型 - 查看代码 选择密钥验证 往下滑&#xff0c;找到key 模型名称 和 终结点 可以直接在该示例中看到 完成。 2.tts语音转文字&文字转语音的 主页中找到语音服务 概述里找到key和region 完成。 demo…

计算机毕业设计Python+DeepSeek-R1大模型期货价格预测分析 期货价格数据分析可视化预测系 统 量化交易大数据 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…