我在Debian Jessie上安装了Docker引擎,我在那里运行带有nginx的容器。我的"跑步"命令如下所示:
docker run -p 1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
它工作正常,问题是现在可以通过http://{server_ip}:1234
访问此容器的内容。我想在这台服务器上运行多个容器(域),所以我想为它们设置反向代理。
如何确保只能通过反向代理访问容器,而不能直接从IP:port
访问容器?例如:
http://{server_ip}:1234 # not found, connection refused, etc...
http://localhost:1234 # works fine
//编辑:为了清楚 - 我不是在问如何设置反向代理,而是如何运行Docker容器只能从localhost访问。
答案 0 :(得分:22)
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="80dp"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.gurkhatech.schoolmanagementteachers.classrooms.singleclass.students.studentsdetails.StudentDetailsActivity"
tools:showIn="@layout/activity_student_details">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image_student_in_content_student_details"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:src="@mipmap/ic_launcher"
/>
<TextView
android:id="@+id/student_name_in_student_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:gravity="center"
android:text=""
android:textColor="@color/colorTeal"
android:textSize="16sp" />
<TextView
android:id="@+id/student_class_in_content_student_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:fontFamily="sans-serif"
android:gravity="center"
android:text=""
android:textColor="@color/colorTeal"
android:textSize="16sp" />
</LinearLayout>
</android.support.v7.widget.CardView>
<TextView
android:id="@+id/birthday_in_content_student_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:fontFamily="sans-serif-light"
android:gravity="center"
android:text=""
android:textSize="16sp" />
<TextView
android:id="@+id/sex_in_content_student_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:gravity="center"
android:text=""
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="15dp"
android:orientation="horizontal"
android:weightSum="10">
</LinearLayout>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/blood_group_students_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-condensed"
android:gravity="center"
android:text="Blood Group"
android:textSize="16sp"
android:visibility="gone" />
<TextView
android:id="@+id/address_students_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:gravity="center"
android:text=""
android:textSize="16sp" />
<TextView
android:id="@+id/email_in_content_students_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="2"
android:fontFamily="sans-serif-light"
android:gravity="center"
android:text=""
android:textColor="@color/colorTeal"
android:textSize="16sp" />
<TextView
android:id="@+id/phone_in_content_students_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="2"
android:fontFamily="sans-serif-light"
android:gravity="center"
android:text=""
android:textColor="@color/colorTeal"
android:textSize="16sp" />
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
<TextView
android:id="@+id/image_upload_student_details"
android:layout_width="match_parent"
android:layout_height="70dp"
android:text="@string/upload_image"
android:textColor="@android:color/white"
android:textSize="30sp"
android:gravity="center"
android:layout_alignParentBottom="true"
android:background="@color/primary" />
</RelativeLayout>
</ScrollView>
如果您正在执行反向代理,您可能希望将它们全部放在用户定义的网络上以及反向代理,然后所有内容都在容器中并可在其内部网络上访问。
docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
答案 1 :(得分:4)
嗯,解决方案非常简单,您只需在映射端口时指定127.0.0.1
:
docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9