如何永久设置docker容器主机名/IP?

如何永久设置docker容器主机名/IP?,docker,Docker,有没有办法在docker中为容器永久设置主机名和IP? 我想在一个虚拟机中创建一个机器(容器)堆栈,理想情况下使用主机名彼此对话。您可以使用Docker 1.10.0版之后提供的新网络功能 这允许您通过容器的名称连接到容器,分配Ip地址树和主机名 创建新网络时,连接到该网络的任何容器都可以通过名称、ip或主机名访问其他容器 i、 e: 1)创建网络 $ docker network create --subnet=172.18.0.0/16 mynet123 $ docker r

有没有办法在docker中为容器永久设置主机名和IP?
我想在一个虚拟机中创建一个机器(容器)堆栈,理想情况下使用主机名彼此对话。

您可以使用Docker 1.10.0版之后提供的新网络功能

这允许您通过容器的名称连接到容器,分配Ip地址树和主机名

创建新网络时,连接到该网络的任何容器都可以通过名称、ip或主机名访问其他容器

i、 e:

1)创建网络

$ docker network create --subnet=172.18.0.0/16 mynet123       
$ docker run --net mynet123 -h myhostname --ip 172.18.0.22 -it ubuntu bash
2)在网络内部创建容器

$ docker network create --subnet=172.18.0.0/16 mynet123       
$ docker run --net mynet123 -h myhostname --ip 172.18.0.22 -it ubuntu bash
旗帜:

  • --net
    将容器连接到网络
  • --ip
    指定IPv4地址
  • -h,--hostname
    指定主机名
  • --添加主机
    向/etc/hosts添加更多条目
您可以使用该工具创建具有特定主机名和地址的容器堆栈

以下是具有特定网络配置的示例
docker compose.yml

version: "2"
services:
  host1:
    networks:
      mynet:
        ipv4_address: 172.25.0.101
networks:
  mynet:
    driver: bridge
    ipam:
      config:
      - subnet: 172.25.0.0/24
来源:

下面是容器相互ping的
docker compose.yml
文件示例:

version: '3'
services:
  ubuntu01:
    image: bash
    hostname: ubuntu01
    command: ping -c1 ubuntu02
  ubuntu02:
    image: bash
    hostname: ubuntu02
    command: ping -c1 ubuntu01

运行
docker compose up

你想完成什么?如果你想这么做的话,我建议你用错误的方式来考虑容器。我想设置一堆机器来运行一个webapp。比如说2台mariadb机器,nginx,一台带有jvm,kakfa,zookeeper,一台用于logparser等。目前,安装程序在vmware中作为12-14个虚拟机运行。可以将这些虚拟机作为容器运行吗?可以。但是,与尝试静态配置容器相比,您最好使用端口映射(可能使用haproxy)。是的,这是一个错误的假设。当我问这个问题时,我不太清楚当时我在做什么。这不会自动将主机添加到您的其他实例中。例如,
ubuntu02
不会有
ubuntu01
主机,反之亦然。请参阅额外的主机。此答案用于添加主机名,而不是添加主机(如/etc/hosts)。所以它对我来说很有效,因为我想更改主机名。添加主机时使用的是是否确实需要
--ip
标志?