在docker容器内 获取swarm节点IP

想在应用内获取当前swarm节点的IP
使用.net 6框架 vs2022开发工具

步骤一 在镜像中安装docker-ce-cli

修改Dockerfile,在原FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base 和WORKDIR /app之间添加

FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
### 开始添加内容
WORKDIR /src
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list  ; \
    apt-get  -y   -q update ; \    
### BEGIN docker for CI tests
    apt-get install -y --no-install-recommends  ca-certificates curl gnupg ; \
    install -m 0755 -d /etc/apt/keyrings ; \
    curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg ; \
    echo \
         "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
         "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null ; \    
    apt-get update ; \
    apt-get install -y --no-install-recommends docker-ce-cli ; \
    apt remove -y curl gnupg  ; \
    apt clean ; \
    apt autoremove -y ; \
    apt -f install ; 
### END docker for CI tests
### 结束添加
WORKDIR /app

步骤二 挂载 /var/run/docker.sock文件

/var/run/docker.sock简单地说,它是Docker守护进程(Docker daemon)默认监听的Unix域套接字(Unix domain socket),容器中的进程可以通过它与Docker守护进程进行通信。
在docker-compose.yml中挂载

volumes:
      - /var/run/docker.sock:/var/run/docker.sock

获取IP的代码

简单测试代码

try
{
    string fileName = "docker";
    string arguments = "info  -f '{{.Swarm.NodeAddr}}'";
    var psi = new ProcessStartInfo(fileName, arguments) { RedirectStandardOutput = true };
    var process = Process.Start(psi);
    if (process == null)
    {
        Console.WriteLine("查询docker info的Process为null。");

    }
    else
    {
        // *** Read the streams ***
       var outputStream = process.StandardOutput.ReadToEnd();
        Console.WriteLine("IP:" + outputStream.Replace("'", ""));
        process.Close();
    }
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值