使容器只能从localhost访问

时间:2016-09-09 05:15:16

标签: docker portforwarding

我在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访问。

2 个答案:

答案 0 :(得分:22)

port mapping

中指定所需的主机IP
<?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