首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkinsfile将暴露的端口从一个容器绑定到另一个链接容器上的localhost

Jenkinsfile将暴露的端口从一个容器绑定到另一个链接容器上的localhost
EN

Stack Overflow用户
提问于 2018-02-09 07:42:03
回答 1查看 947关注 0票数 0

我有一个公开某些端口的服务。我希望这个服务的容器链接到Jenkins从容器,并且在Jenkins从容器的localhost上有相同的端口可用。

代码语言:javascript
复制
docker.image('some-service').withRun() { l ->
  docker.image('jenkins-slave').inside("--link ${l.id}:my-service") {
    echo "Exposed ports from some-service are available on localhost on jenkins-slave"
  }
}

我该怎么做呢?谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-02-16 05:08:11

链接容器并不在本地主机上发布端口,而是连接两个容器之间的私有网络。使用上面的示例,some-service上公开的端口(Dockerfile中的EXPOSE语法)将可用于使用主机名进行发现的jenkins-slave容器:

代码语言:javascript
复制
$ nc my-service 8080

Docker还将注入一大堆环境变量。要在没有Jenkins的情况下查看这一点,只需手动运行几个容器。

首先,将服务容器作为守护进程运行:

代码语言:javascript
复制
$ docker run --rm -d --name some-service tutum/hello-world
d26f4f768218006060e5bed6f228a979be51246722f70e2bc75db73b9d21fd62

然后运行一个阿尔卑斯山容器:

代码语言:javascript
复制
$ docker run --link some-service:my-service -it alpine:3.7 sh

检查环境:

代码语言:javascript
复制
/ # env
MY_SERVICE_PORT_80_TCP=tcp://172.17.0.6:80
HOSTNAME=b1a44bdfa022
SHLVL=1
HOME=/root
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MY_SERVICE_PORT=tcp://172.17.0.6:80
MY_SERVICE_NAME=/vigilant_beaver/my-service
MY_SERVICE_PORT_80_TCP_ADDR=172.17.0.6
PWD=/
MY_SERVICE_PORT_80_TCP_PORT=80
MY_SERVICE_PORT_80_TCP_PROTO=tcp

连接到依赖服务:

代码语言:javascript
复制
/ # wget -q -O- http://my-service/
<html>
<head>
    <title>Hello world!</title>
    <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
    <style>
    body {
        background-color: white;
        text-align: center;
        padding: 50px;
        font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
    }

    #logo {
        margin-bottom: 40px;
    }
</style>
</head>
<body>
    <img id="logo" src="logo.png" />
    <h1>Hello world!</h1>
    <h3>My hostname is d26f4f768218</h3>    </body>
</html>

如果您的网络需求变得更加复杂,请考虑设置Docker network

干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48696592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档