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

Docker容器使用手册——进阶篇(下)

目录

  • 1. 简介
  • 2. 基本概念
  • 3. 安装与配置
  • 4. 容器管理
  • 5. 镜像管理
  • 6. 网络配置
  • 7. 存储管理
  • 8. Docker Compose
  • 9. 常见问题与解决方案
  • 10. 最佳实践
  • 附录:常用命令速查表

Docker容器使用手册——入门篇(上)

6. 网络配置

6.1 Docker网络类型

  1. bridge网络:默认网络模式,容器连接到docker0网桥
  2. host网络:容器直接使用宿主机网络,不进行网络隔离
  3. none网络:容器没有网络接口
  4. overlay网络:用于Docker Swarm模式下的跨主机通信
  5. macvlan网络:为容器分配MAC地址,使容器看起来像物理设备

6.2 网络管理

  1. 查看网络

    docker network ls
    docker network inspect 网络名
    
  2. 创建网络

    docker network create --driver bridge 网络名
    
  3. 连接容器到网络

    docker network connect 网络名 容器名
    
  4. 断开容器与网络的连接

    docker network disconnect 网络名 容器名
    
  5. 删除网络

    docker network rm 网络名
    docker network prune  # 删除所有未使用的网络
    

6.3 容器间通信

  1. 通过网络别名通信

    # 创建网络
    docker network create app-network# 启动MySQL容器并指定别名
    docker run -d --name mysql --network app-network --network-alias db mysql:5.7# 启动Web应用容器,可以通过db别名访问MySQL
    docker run -d --name web-app --network app-network myapp
    
  2. 通过–link参数(旧方式)

    docker run -d --name mysql mysql:5.7
    docker run -d --name web-app --link mysql:db myapp
    

7. 存储管理

7.1 卷(Volumes)

  1. 创建卷

    docker volume create 卷名
    
  2. 查看卷

    docker volume ls
    docker volume inspect 卷名
    
  3. 删除卷

    docker volume rm 卷名
    docker volume prune  # 删除所有未使用的卷
    
  4. 使用卷

    docker run -d -v 卷名:容器路径 镜像名
    

7.2 绑定挂载(Bind Mounts)

  1. 基本语法

    docker run -d -v 主机路径:容器路径 镜像名
    
  2. 示例

    # 挂载当前目录到容器的/app目录
    docker run -d -v $(pwd):/app nginx
    

7.3 tmpfs挂载

  1. 基本语法

    docker run -d --tmpfs 容器路径 镜像名
    
  2. 示例

    # 在容器中创建临时文件系统
    docker run -d --tmpfs /tmp/data nginx
    

8. Docker Compose

8.1 什么是Docker Compose

Docker Compose是Docker官方提供的工具,用于定义和运行多容器Docker应用程序。通过YAML文件配置应用程序的服务、网络和卷。

8.2 安装Docker Compose

  1. 在Windows/macOS上:Docker Desktop已包含Docker Compose

  2. 在Linux上安装

    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    docker-compose --version
    

8.3 使用Docker Compose

  1. 创建docker-compose.yml文件

    version: '3'
    services:web:image: nginx:latestports:- "80:80"volumes:- ./html:/usr/share/nginx/html- ./nginx.conf:/etc/nginx/nginx.confdepends_on:- appapp:build: .ports:- "5000:5000"environment:- DB_HOST=db- DB_PORT=5432depends_on:- dbdb:image: postgres:13environment:- POSTGRES_USER=user- POSTGRES_PASSWORD=password- POSTGRES_DB=mydbvolumes:- db-data:/var/lib/postgresql/data
    volumes:db-data:
    
  2. 启动服务

    docker-compose up -d
    
  3. 查看服务状态

    docker-compose ps
    
  4. 停止服务

    docker-compose down
    
  5. 其他常用命令

    # 构建或重新构建服务
    docker-compose build# 查看日志
    docker-compose logs# 进入容器
    docker-compose exec 服务名 /bin/bash
    

9. 常见问题与解决方案

9.1 镜像拉取失败

问题:无法拉取Docker镜像或拉取速度慢

解决方案

  • 配置国内镜像源(如阿里云、网易云等)
  • 检查网络连接和代理设置
  • 尝试使用不同的镜像仓库

9.2 端口冲突

问题:启动容器时提示端口已被占用

解决方案

  • 使用不同的主机端口映射:-p 8080:80
  • 停止占用端口的其他服务
  • 检查是否有其他容器在使用相同端口

9.3 容器启动失败

问题:容器启动后立即退出或启动失败

解决方案

  • 查看容器日志:docker logs 容器名
  • 检查应用配置和环境变量设置
  • 确保挂载的卷路径正确

9.4 权限问题

问题:容器内操作文件时遇到权限错误

解决方案

  • 使用-u参数指定用户ID:docker run -u $(id -u):$(id -g) 镜像名
  • 在Dockerfile中调整文件权限
  • 确保宿主机挂载目录有正确的权限

9.5 资源限制问题

问题:容器占用过多资源或性能不佳

解决方案

  • 设置资源限制:docker run --memory=1g --cpus=1 镜像名
  • 优化应用程序代码
  • 使用更轻量级的基础镜像

10. 最佳实践

10.1 镜像最佳实践

  • 使用多阶段构建:减小最终镜像体积

    FROM golang:1.16 AS builder
    WORKDIR /app
    COPY . .
    RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .FROM alpine:latest
    WORKDIR /root/
    COPY --from=builder /app/app .
    CMD ["./app"]
    
  • 使用固定版本标签:避免使用latest标签

  • 最小化镜像层数:合并RUN指令,清理临时文件

  • 使用.dockerignore文件:排除不需要的文件

  • 选择合适的基础镜像:优先选择Alpine等轻量级镜像

10.2 容器最佳实践

  • 一个容器只运行一个进程:遵循单一职责原则
  • 使用非root用户:增强安全性
  • 设置健康检查:监控容器状态
  • 使用环境变量配置应用:便于部署和维护
  • 正确处理信号:确保容器优雅退出

10.3 安全性最佳实践

  • 定期更新基础镜像:修复安全漏洞
  • 扫描镜像漏洞:使用工具如Trivy、Clair等
  • 限制容器资源:防止DoS攻击
  • 使用只读文件系统docker run --read-only 镜像名
  • 禁止容器访问敏感挂载点

10.4 性能优化

  • 使用适当的存储驱动:根据需求选择overlay2、aufs等
  • 优化卷使用:减少卷的使用或使用更快的存储
  • 合理设置容器资源限制
  • 使用缓存层:在Dockerfile中合理安排指令顺序

附录:常用命令速查表

容器操作

命令描述
docker run [选项] 镜像名创建并运行容器
docker ps列出运行中的容器
docker ps -a列出所有容器
docker start/stop/restart 容器名启动/停止/重启容器
docker rm 容器名删除容器
docker exec -it 容器名 命令在运行的容器中执行命令
docker logs 容器名查看容器日志
docker inspect 容器名查看容器详细信息

镜像操作

命令描述
docker pull 镜像名拉取镜像
docker push 镜像名推送镜像
docker build -t 镜像名 路径构建镜像
docker images列出本地镜像
docker rmi 镜像名删除镜像
docker tag 源镜像 目标镜像标记镜像
docker history 镜像名查看镜像历史

网络操作

命令描述
docker network ls列出所有网络
docker network create 网络名创建网络
docker network connect 网络名 容器名连接容器到网络
docker network disconnect 网络名 容器名断开容器与网络的连接
docker network inspect 网络名查看网络详情

存储操作

命令描述
docker volume ls列出所有卷
docker volume create 卷名创建卷
docker volume inspect 卷名查看卷详情
docker volume rm 卷名删除卷
docker volume prune删除未使用的卷

Docker Compose操作

命令描述
docker-compose up -d启动服务
docker-compose down停止并删除服务
docker-compose ps列出服务
docker-compose logs查看服务日志
docker-compose build构建服务镜像
docker-compose exec 服务名 命令在服务容器中执行命令
docker-compose restart重启服务
http://www.dtcms.com/a/613986.html

相关文章:

  • C++入门指南:开启你的编程之旅
  • 智取能量:如何最大化战斗分数?
  • php网站开发技术要点网站模板制作流程
  • 进程和诊断工具速查手册(8.13):VMMap / DebugView / LiveKd / Handle / ListDLLs 一页式现场排障清单
  • 【ros2】ROS2话题(Topic)通信完全指南:订阅与发布详解
  • 网站安全证书有问题如何解决网站地图如何做
  • 演练:使用VB开发多智能体协作的荣格八维分析器
  • 第8章 广播机制
  • 最近的一对
  • 网站设计建网站互联网是做什么的
  • 【C++】AVL树:详细使用及旋转
  • 网站开发技术的雏形 cgi满18点此转入2o2
  • 小华HC32L136K8TA 单片机新建 MDK5 工程模板(二)
  • Qt告警clazy-detaching-temporary浅谈
  • 前端构建工具扩展,Webpack插件开发
  • 拆解 LLM 的 “思考” 过程:推理机制深度解读
  • 《嵌入式成长系列之51单片机 --- Keil5创建工程》
  • 万米单波束EA640的raw数据处理
  • 成都公租房官方网站中南建设网官方网站
  • Cursor Chrome DevTools MCP 配置指南 for Windows
  • 汕头网站设计浩森宇特响应式网页设计图
  • 中职网站建设教学计划学网页设计软件开发
  • SpringBoot中Get请求和POST请求接收参数详解
  • 局部可变形模板匹配算法的初步实现
  • NFS服务
  • python多继承的类型定义了同一个属性或者方法
  • Springboot中CommandLineRunner的用法以及执行顺序的控制
  • (60页PPT)IDC云数据中心机房运维服务解决方案(附下载方式)
  • php网站开发 多少钱青海做网站最好的公司
  • 鸿蒙PC生态实践:LAME 音频编码库移植与工程化指南