You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker中Ubuntu 22.04.4 LTS容器配置静态IP的工具选择问题

Docker中Ubuntu 22.04.4 LTS容器配置静态IP的工具选择问题

嗨,我来帮你梳理下这个问题!首先得说,Docker容器的网络配置其实更推荐通过Docker本身来管理——毕竟容器是轻量运行环境,依赖Docker的网络层会更稳定,也更符合容器化的最佳实践。不过我也会告诉你如果一定要在容器内部修改的话,该用什么工具解决你的问题。

一、推荐方案:通过Docker直接配置静态IP(更省心)

这种方法不需要折腾容器内部的系统配置,步骤很简单:

  • 第一步:创建自定义Docker网络
    先建一个指定子网的自定义网络,避免和宿主机或其他容器的网段冲突:

    docker network create --subnet=172.18.0.0/16 my-ubuntu-network
    

    这里的子网可以根据你自己的需求调整,比如换成192.168.50.0/24这类不常用的网段。

  • 第二步:给容器分配静态IP

    • 如果是启动新容器:
      docker run -d --name my-test-ubuntu --net my-ubuntu-network --ip 172.18.0.10 ubuntu:22.04.4
      
    • 如果是已经在运行的容器,先停掉再连接到自定义网络:
      docker stop my-test-ubuntu
      docker network connect --ip 172.18.0.10 my-ubuntu-network my-test-ubuntu
      docker start my-test-ubuntu
      

    这样容器启动后就会固定使用你指定的IP,重启也不会变,完全不用动容器内部的设置。

二、容器内部配置静态IP的工具选择(如果必须在容器内操作)

你遇到netplan装不上的问题,大概率是因为用的是Ubuntu的最小镜像(minimal版),默认没预装很多工具包,而且你之前输错了包名——Ubuntu里netplan的包其实叫netplan.io,不是netplan!下面给你几种可行的方法:

1. 修正netplan的安装命令

如果还是想用netplan,先更新镜像源,然后安装正确的包:

apt update && apt install -y netplan.io

安装完成后,创建netplan的配置文件(比如/etc/netplan/00-static-ip.yaml):

network:
  ethernets:
    eth0:
      addresses: [172.18.0.10/16]
      gateway4: 172.18.0.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
  version: 2

然后应用配置:

netplan apply

2. 使用ip命令(更轻量化的工具)

ip是现在Linux系统推荐的网络管理工具,先安装它的依赖包iproute2

apt update && apt install -y iproute2

临时设置静态IP(重启容器后失效):

ip addr add 172.18.0.10/16 dev eth0

如果要永久生效,需要配合ifupdown工具编辑网络配置文件:

3. 使用ifupdown工具(传统配置方式)

先安装ifupdown

apt update && apt install -y ifupdown

编辑/etc/network/interfaces文件,添加静态IP配置:

auto eth0
iface eth0 inet static
    address 172.18.0.10
    netmask 255.255.0.0
    gateway 172.18.0.1

然后重启网络接口:

ifdown eth0 && ifup eth0

最后提醒一下:容器内部修改网络配置的话,重启容器后配置会丢失,除非你把配置文件挂载到宿主机,或者基于修改后的容器制作自定义镜像。所以还是推荐用Docker自定义网络的方法,更省心也更稳定。

备注:内容来源于stack exchange,提问作者Soporte IT AnalizaHN

火山引擎 最新活动