linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
  • Ansible

    • Ansible: 基本操作
    • Ansible: 安装
    • Ansible: 简介
    • YAML: 文件格式
    • Playbook

      • Playbook: 介绍
      • Playbook: 操作
    • 模块

      • Yum模块常用参数
    • 实战

      • Ansible 实战
  • Anaconda

    • Anaconda命令
  • Iptables

    • Iptable: 防火墙
    • iptables 用法
  • Systemd

    • 系统服务配置
    • 系统服务启动文件
    • 性能优化

      • Linux 系统监控
      • Linux 系统性能优化
      • Linux 系统故障诊断
      • Linux 系统日志管理
  • Network

    • 用一张图解释 8 种流行的网络协议
    • 反子网掩码
    • 交换机端口模式
    • eNSP 软件
    • 华为交换机配置命令
    • eNSP静态路由实验
  • Commands

    • 命令别名:alias
    • 多类型资源统计工具: dstat
    • history配置
    • unzip命令
    • Linux用户到期登录时间和随机密码
    • 常用 Command
    • ssh

      • ssh-keygen
      • linux ssh命令
  • CI/CD

    • Jenkins CI/CD 管道
  • Kubernetes

    • Docker系列学习

      • 01. 什么是Docker
      • 02. Docker安装
      • 03. 使用Docker镜像
      • 04. 利用commit理解镜像构成
      • 05. 操作Docker容器
      • 06. 使用Dockerfile定制镜像
      • 07. Dockerfile指令详解
      • 08. Dockerfile多阶段创建
      • 09. 访问仓库
      • 10. 修改docker的启动项
      • 11. Nexus3.x的私有仓库
      • 12. docker-hub加速器
      • 13. 数据管理
      • 14. 使用网络
  • Shell编程

    • Shell 编程基础
    • Shell 脚本执行消耗的时间
    • Shell 自动生成简介

14. 使用网络

  • 简介
  • 外部访问容器
    • 端口映射
    • 端口映射格式
    • 查看端口映射
  • 容器互联
    • 创建网络
    • 连接容器
    • 测试连通性
  • DNS 配置
    • 全局 DNS 配置
    • 容器 DNS 配置
  • 最佳实践

简介

Docker 提供了强大的网络功能,支持多种网络模式:

  • bridge: 默认网络模式,容器通过网桥连接
  • host: 容器使用主机网络
  • none: 容器没有网络连接
  • overlay: 用于 Swarm 模式的跨主机网络
  • macvlan: 允许容器直接连接物理网络

外部访问容器

端口映射

Docker 提供两种端口映射方式:

  • -P: 随机映射端口(49000-49900)
  • -p: 指定映射端口
# 使用随机端口映射
docker run -d -P training/webapp python app.py

# 查看端口映射
docker container ls -l

# 查看应用日志
docker logs -f nostalgic_morse

端口映射格式

使用 -p 参数时支持以下格式:

  • hostPort:containerPort: 映射所有接口
  • ip:hostPort:containerPort: 映射指定接口
  • ip::containerPort: 映射指定接口的随机端口
# 映射本地 5000 端口到容器 5000 端口
docker run -d -p 5000:5000 training/webapp python app.py

# 映射到 localhost
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

# 映射到随机端口
docker run -d -p 127.0.0.1::5000 training/webapp python app.py

# 指定 UDP 协议
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

查看端口映射

# 查看指定端口映射
docker port nostalgic_morse 5000

# 查看容器所有端口映射
docker port nostalgic_morse

注意:

  • 每个端口只能绑定到一个容器
  • 可以多次使用 -p 参数绑定多个端口
  • 容器重启后端口映射会保持不变

容器互联

创建网络

# 创建桥接网络
docker network create -d bridge my-net

# 查看网络列表
docker network ls

连接容器

# 启动容器并连接到网络
docker run -it --rm --name busybox1 --network my-net busybox sh

# 启动第二个容器
docker run -it --rm --name busybox2 --network my-net busybox sh

测试连通性

# 在 busybox1 中测试
ping busybox2

# 在 busybox2 中测试
ping busybox1

DNS 配置

全局 DNS 配置

编辑 /etc/docker/daemon.json:

{
  "dns": [
    "114.114.114.114",
    "8.8.8.8"
  ]
}

容器 DNS 配置

# 设置容器的主机名
docker run -it --rm --hostname=my-host centos:7

# 设置 DNS 服务器

docker run -it --rm --dns=8.8.8.8 centos:7

# 设置 DNS 搜索域

docker run -it --rm --dns-search=example.com centos:7

最佳实践

  1. 网络安全

    • 避免暴露不必要的端口
    • 使用内部网络进行容器间通信
    • 配置适当的防火墙规则
  2. 网络性能

    • 使用 host 网络模式提高性能
    • 合理规划网络拓扑
    • 监控网络流量
  3. 服务发现

    • 使用 Docker DNS 服务
    • 考虑使用服务发现工具
    • 实现健康检查机制

参考资料:

  • Docker 网络概述
  • Docker 网络命令
最近更新时间:
Prev
13. 数据管理