簡體   English   中英

連接到暴露的docker容器

[英]connecting to exposed docker container

我正在嘗試將docker容器暴露給外部世界,而不僅僅是主機。 當我從基礎CentOS圖像創建圖像時,它看起來像這樣:

# install openssh server and ssh client
RUN yum install -y openssh-server
RUN yum install -y openssh-clients

RUN echo 'root:password' | chpasswd

RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

我像這樣運行這個圖像:

sudo docker run -d -P crystal/ssh

當我嘗試用sudo docker ps查看容器時,我看到Ports:

0.0.0.0:49154->22tcp

如果我在主機上的ifconfig (ubuntu),我看到docker0 inet addr:172.17.42.1。 我可以從我的主機ping這個,但不能從任何其他機器ping。 在設置容器以查看外部世界時,我做錯了什么? 謝謝。

編輯:

我已經嘗試檢查容器的IPAddress,我看到IPAddress:172.17.0.28,但我無法ping通...

如果我嘗試nmap,那似乎返回端口。 那么這是否意味着它是開放的,如果我有ssh設置,我應該能夠進入它? 謝謝。

nmap -p 49154 10.211.55.1顯示端口已打開且服務未知。

我試着用ssh -l root -p 49154 10.211.55.1 ssh in我得到了

Read from socket failed: Connection reset by peer.

UPDATE

您的Dockerfile錯誤。 你的sshd沒有正確配置,它沒有正確啟動,這就是容器沒有正確響應端口22的原因。 看錯誤:

Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key

您需要生成主機密鑰。 這條線將起到魔力:

RUN ssh-keygen -P "" -t dsa -f /etc/ssh/ssh_host_dsa_key

以前的答案

您可能需要查找eth0接口的IP地址(可從網絡訪問),您需要通過此IP地址連接到您的容器。 來自/到docker0網橋的流量應默認轉發到您的eth接口。

此外,您最好檢查是否啟用了IP轉發:

cat /proc/sys/net/ipv4/ip_forward

此命令應返回1,否則您應該執行:

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

問:為什么你可以通過這種方式連接到容器?

如果啟用了ip轉發,則從eth0接口傳入的數據包將轉發到虛擬docker0接口。 魔術發生,並在正確的容器上收到數據包。 有關詳細信息,請參閱Docker Advanced Networking

但是docker0不是普通的接口。 它是一個虛擬以太網橋,可以在連接到它的任何其他網絡接口之間自動轉發數據包。 這允許容器與主機和彼此進行通信。 每次Docker創建一個容器時,它都會創建一對“對等”接口,就像管道的兩端一樣 - 一個上發送的數據包將在另一個上接收。 它使容器中的一個對等體成為其eth0接口,並在主機的命名空間中使用諸如vethAQI2QT之類的唯一名稱來保持另一個對等體。 通過將每個veth *接口綁定到docker0網橋,Docker創建了一個在主機和每個Docker容器之間共享的虛擬子網。

您無法從主機外部ping 172.17.42.1,因為它是私有IP,因此只能在專用網絡中訪問它,因為它是由您運行docker容器的主機創建的,即虛擬交換機docker0和docker容器,它附帶一個虛擬接口到橋接器docker0 ...

此外172.17.42.1是橋接器docker0的ip,而不是docker實例的ip。 如果你想知道docker實例的ip,你必須在其中運行ifconfig,或者你可以使用docker inspect

我不是端口映射方面的專家,但對我而言,這意味着要訪問端口22上的docker容器,您必須連接到主機的端口49154,並且所有流量都將被轉發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM