docker-compose如何为链接ips创建别名

时间:2018-05-30 09:38:02

标签: docker kubernetes ip docker-compose alias

运行docker-compose时,所有容器都有网络别名到网络中运行的其他容器的ip。 这些别名是如何创建的?

我需要在Kubernetes集群中的nginx容器中重新创建一个别名,因为nginx conf不允许环境变量,我从那里将代理请求转发到另一个容器。 我通常会编辑/ etc / hosts文件,但由于docker-compose没有,我想知道如何创建别名,以及我是否可以在我的kubernetes集群中以相同的方式执行此操作。

2 个答案:

答案 0 :(得分:1)

在kubernetes群集中,默认情况下部署了DNS服务器服务。

kubectl get svc应显示DNS服务IP地址。

您也可以在容器/etc/resolv.conf文件中找到DNS服务器IP地址。

有关详细信息,请参阅here

您可以使用HostAliases在容器的/etc/hosts文件中指定其他条目。请参阅here

剪断:

apiVersion: v1
kind: Pod
metadata:
  name: hostaliases-pod
spec:
  restartPolicy: Never
  hostAliases:
  - ip: "127.0.0.1"
    hostnames:
    - "foo.local"
    - "bar.local"
  - ip: "10.1.2.3"
    hostnames:
    - "foo.remote"
    - "bar.remote"

答案 1 :(得分:0)

正如documentation

所述
  

链接服务的容器可以在与别名相同的主机名上访问,如果没有指定别名,则可以访问服务名称

这意味着如果你有一个这样的docker-compose文件:

import React, { Component } from 'react';
import Amplify, { Auth, API } from 'aws-amplify';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import {getShifts} from '../actions/index';
import settings from '../../aws-config.js';
Amplify.configure(settings);

class StaffRota extends Component {
  componentWillMount() {
  this.props.getShifts();
  }
  renderPosts(){
    console.log(this.props);
  return (

    <div></div>
  );


    }
}

function MapDispatchToProps(dispatch) {
  return bindActionCreators({ getShifts }, dispatch);
}
export default connect(null, MapDispatchToProps)(StaffRota);

然后nginx能够通过version: '3' services: nginx: links: - app1 ... app1: ... 访问另一个容器。