Skip to main content

如何配置 Docker 模板

Docker 是 GNS3 中基于容器技术的节点类型,与 QEMU/Dynamips 等虚拟机不同,它共享宿主机内核,启动速度极快。

创建模板

以下以 Ubuntu 容器为例,介绍如何创建 Docker 模板。

  1. 点击"Docker"选项进入。

    进入 Docker
  2. 点击右上角的 + 号按钮添加新模板。

    点击添加
  3. 按照引导步骤依次操作,点击"Docker Virtual Machine"。

    向导开始
  4. 如果镜像已存在,点选"Existing image"并在列表中选择,然后点击"Container name"。

    选择已有镜像
  5. 如果镜像不存在,点选"New image",在"Image name"中输入镜像名称(如 ubuntu:latest),然后点击"Container name"。

    输入新镜像
  6. 在"Container name"中输入容器模板名称,然后点击"Network adapters"。

    容器名称
  7. 在"Network adapters"中配置接口数量,然后点击"Start command"。

    网络适配器
  8. 在"Start command"中输入启动参数,然后点击"Console type"。

    启动命令
  9. 根据容器类型选择 console type(telnet/vnc 等),然后点击"Auxiliary console type"。

    控制台类型
  10. "Auxiliary console type"选择"None",然后点击"Environment"。

    辅助控制台
  11. 在"Environment"中配置容器的环境变量,然后点击"Add Template"完成创建。

    环境变量
  12. 创建完成后,在列表中可以看到新模板。

    创建完成
  13. 点击右侧的三个点按钮,可以选择删除(Delete)、复制(Copy)或编辑(Edit)。

    操作菜单

与其他节点类型的区别

特性DockerQEMUDynamipsVPCS
技术类型容器(共享内核)全虚拟化硬件模拟模拟 PC
启动速度极快(秒级)慢(分钟级)
镜像大小小(分层存储)大(几 GB)中等极小
网卡数量0-1000-275依赖平台1
控制台类型8 种7 种telnet/sshtelnet
内存限制可选(0=无限制)必填必填
CPU 限制可选(支持小数)必填必填

Docker 模板配置详解

通用设置(General settings)

字段类型单位用途
Template name文本模板名称,在列表中显示
Default name format文本实例自动命名格式,如 {name}-{0}
Image文本Docker 镜像名称(如 ubuntu:latest)
Category下拉选择设备分类
Symbol文本 + 按钮拓扑图图标
TagsChip 输入框标签,用于分类/筛选
Adapters数值网络适配器数量,默认为 0
Base MAC文本基 MAC 地址,留空自动生成
Maximum memory数值MB内存上限,0=无限制
Maximum CPUs数值CPU 核心数上限,0=无限制
Console type下拉选择telnet / ssh / vnc / http / https / none
Auxiliary console type下拉选择辅助控制台类型
VNC console resolution下拉选择VNC 分辨率,仅在 console_type 为 vnc 时有效
HTTP port in the container数值容器内 HTTP 端口号
HTTP path文本HTTP 路径,如 //gui
Auto start console复选框启用后自动打开控制台
Edit network configuration按钮自定义网卡 MAC 地址
通用设置

自定义网络配置

点击 "Edit network configuration" 打开对话框,每行一个网卡:

列名字段类型用途
Adapter只读标签网卡编号,自动递增
Port name只读文本端口名称,固定为 eth0、eth1...(Docker 约定)
MAC address文本输入MAC 地址,可自定义,留空自动生成
操作删除按钮删除此网卡
自定义网络

高级设置(Advanced)

Start command

字段类型用途
Start command文本域容器启动命令,覆盖 Docker 镜像的默认 CMD

Environment

字段类型用途
Environment文本域环境变量,每行一个,格式 KEY=VALUE。支持模板变量:%vm-name%%vm-id%%project-id%%project-path%

示例:

DB_HOST=192.168.1.10
DB_PORT=5432
API_KEY=%vm-id%
PROJECT=%project-id%

Extra volumes

字段类型用途
Extra volumes文本域额外挂载卷,每行一个容器内目录路径,容器删除后数据不丢失

示例:

/data
/config
/var/log/app

Extra hosts

字段类型用途
Extra hosts文本域额外主机名映射,每行一个,格式 hostname:IP

示例:

gns3.local:192.168.100.10
database.internal:10.0.0.5
api.example.com:172.16.0.100
高级设置