我需要在远程服务器A(服务器)(ubuntu)和Docker容器B,C,D(客户端)(debian)列表之间设置共享文件夹。我正在使用Rancher来管理这些容器,并且它们可以在不同的主机上移动,因此我不想与Docker主机共享任何卷。 A必须接收和删除文件,并且必须能够将这些更改传达给B,C,D,并且逆关系相同。 通过具有haproxy重定向的负载均衡器可以访问我的容器。
几天以来,我一直在努力寻找正确共享这些文件夹的解决方案,但是我从来没有这样做过。我试图在Rancher中使用nfs-driver,但是我从来没有加载任何东西。而且我也尝试直接挂载网络文件系统(NFS),但也没有成功:两台服务器之间无法通信,当我尝试挂载文件夹时,什么也没发生。我看到服务器端拒绝连接(但ping正常),所以可能是密码问题或映射问题。我读到NFS并非旨在共享云上的文件夹,但是所有服务器都位于我的提供商的同一区域中,并且有可能将它们放在专用网络中,因此我认为它可以工作。
在这种情况下可以使用NFS吗?如果是,您在Docker客户端的配置上是否有任何潜在客户(特别是在域名上,因为我无法为其设置IP)。否则,我可以使用哪种其他解决方案?
我们将不胜感激。
答案 0 :(得分:0)
您要显示任何代码吗? 您正在寻找的是Docker卷 https://docs.docker.com/storage/volumes/
例如-v开关
public class FireBaseHandler{
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mFireBaseReference;
private long firebaseKeyCount;
public FireBaseHandler(){
mFirebaseDatabase = FirebaseDatabase.getInstance();
mFireBaseReference = mFirebaseDatabase.getReference();
firebaseKeyCount = 0;
}
public void readAllKeysFireBase(final OnFireBaseListener listener){
mFireBaseReference.addValueEventListener(new ValueEventListener() {
@Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
for(DataSnapshot key : snapshot.getChildren()){
Log.d("getKeys(): ", key.getKey()); //gets the keys from firebase
firebaseKeyCount = listener.keyCount(key.getChildrenCount());
}//foreach_snapshot
}//foreach_dataSnapshot
}//onDataChange
@Override public void onCancelled(@NonNull DatabaseError databaseError) {
Log.w("onCancelled()", "Failed to read value.", databaseError.toException());
}//onCancelled
});//mFireBaseReference
}//readAllKeysFireBase
}//FireBaseHandler end of class
public interface OnFireBaseListener{
long keyCount(long data);
}
答案 1 :(得分:0)
在我看来,您的解决方案将需要结合使用第一个答案中所述的Docker卷配置以及NFS或类似的远程挂载技术。使用Docker卷挂载,您可以将主机文件系统位置映射到容器中的文件系统位置。您将必须弄清楚如何使用NFS将主机文件系统位置映射到其他主机上的文件系统。