当前位置: 首页 > news >正文

docker通用技术介绍

docker通用技术介绍

1.docker介绍

1.1 基本概念

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

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

1.2 docker的优势

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

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

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

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

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>

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回环地址。

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

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.lryc.cn/news/545121.html

相关文章:

  • #渗透测试#批量漏洞挖掘#某图创图书馆集群管理系统updOpuserPw SQL注入(CVE-2021-44321)
  • 智能合约安全 | 合约无效化攻击
  • RabbitMQ 的介绍与使用
  • 【手撕算法】K-Means聚类全解析:从数学推导到图像分割实战
  • 【SQL技术】不同数据库引擎 SQL 优化方案剖析
  • RabbitMQ系列(二)基本概念之Publisher
  • OAK相机的抗震性测试
  • 2025最新Nginx高频面试题
  • 【Kubernetes】API server 限流 之 maxinflight.go
  • 推荐算法工程师的技术图谱和学习路径
  • Milvus高性能向量数据库与大模型结合
  • 轮式机器人在复杂地形中如何选择合适的全局路径规划算法?
  • Metal学习笔记九:光照基础
  • 【字符串】最长公共前缀 最长回文子串
  • Linux提权之详细总结版(完结)
  • week 3 - More on Collections - Lecture 3
  • Pwntools 的详细介绍、安装指南、配置说明
  • PLC(电力载波通信)网络机制介绍
  • Qt监控系统远程回放/录像文件远程下载/录像文件打上水印/批量多线程极速下载
  • 自学微信小程序的第八天
  • 【java】@Transactional导致@DS注解切换数据源失效
  • 003 SpringBoot集成Kafka操作
  • Android SystemUI开发(一)
  • C#贪心算法
  • Vue程序下载
  • 【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees学习笔记
  • 机器学习决策树
  • Spring Boot + MyBatis 实现 RESTful API 的完整流程
  • 通过 ANSYS Discovery 进行 CFD 分析,增强工程设计
  • 家用可燃气体探测器——家庭燃气安全的坚实防线