如何在服务器和Docker容器之间挂载共享文件夹?

时间:2018-07-23 14:14:51

标签: docker architecture mount nfs

我需要在远程服务器A(服务器)(ubuntu)和Docker容器B,C,D(客户端)(debian)列表之间设置共享文件夹。我正在使用Rancher来管理这些容器,并且它们可以在不同的主机上移动,因此我不想与Docker主机共享任何卷。 A必须接收和删除文件,并且必须能够将这些更改传达给B,C,D,并且逆关系相同。 通过具有haproxy重定向的负载均衡器可以访问我的容器。

几天以来,我一直在努力寻找正确共享这些文件夹的解决方案,但是我从来没有这样做过。我试图在Rancher中使用nfs-driver,但是我从来没有加载任何东西。而且我也尝试直接挂载网络文件系统(NFS),但也没有成功:两台服务器之间无法通信,当我尝试挂载文件夹时,什么也没发生。我看到服务器端拒绝连接(但ping正常),所以可能是密码问题或映射问题。我读到NFS并非旨在共享云上的文件夹,但是所有服务器都位于我的提供商的同一区域中,并且有可能将它们放在专用网络中,因此我认为它可以工作。

在这种情况下可以使用NFS吗?如果是,您在Docker客户端的配置上是否有任何潜在客户(特别是在域名上,因为我无法为其设置IP)。否则,我可以使用哪种其他解决方案?

我们将不胜感激。

2 个答案:

答案 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将主机文件系统位置映射到其他主机上的文件系统。

相关问题