运行docker-compose时,所有容器都有网络别名到网络中运行的其他容器的ip。 这些别名是如何创建的?
我需要在Kubernetes集群中的nginx容器中重新创建一个别名,因为nginx conf不允许环境变量,我从那里将代理请求转发到另一个容器。 我通常会编辑/ etc / hosts文件,但由于docker-compose没有,我想知道如何创建别名,以及我是否可以在我的kubernetes集群中以相同的方式执行此操作。
答案 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)
链接服务的容器可以在与别名相同的主机名上访问,如果没有指定别名,则可以访问服务名称
这意味着如果你有一个这样的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:
...
访问另一个容器。