我有一個Ruby on Rails環境,並將其轉換爲在Docker中運行。這主要是因爲開發機器是Windows筆記本電腦,而服務器不是。我有Docker容器主要運行,現在我想連接RubyMine調試器。爲了達到這個目的,建議在容器中設置一個SSH服務器。如何從Windows連接到Docker容器內的SSHD?
我成功地使用從https://docs.docker.com/engine/examples/running_ssh_service/#build-an-egsshd-image所述dockerfile線減去EXPOSE 22(因爲它不與搬運工-compose.yml端口映射工作)加入SSHD到容器中。但端口不在本地機器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6652389d248c civilservice_web "bundle exec rails..." 16 minutes ago Up 16 minutes 0.0.0.0:3000->3000/tcp, 0.0.0.0:3022->22/tcp civilservice_web_1
上訪問當我嘗試在本地主機和3022點PUTTY,它說,服務器意外關閉了連接。
我在這裏錯過了什麼?
這是我dockerfile
FROM ruby:2.2
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
nodejs \
openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed '[email protected]\s*required\s*[email protected] optional [email protected]' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
CMD ["/usr/sbin/sshd", "-D"]
RUN mkdir /MyApp
WORKDIR /MyApp
ADD Gemfile /MyApp/Gemfile
ADD Gemfile.lock /MyApp/Gemfile.lock
RUN bundle install
ADD . /MyApp
,這是我的搬運工,compose.yml
version: '2'
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/CivilService
ports:
- "3000:3000"
- "3022:22"
DOCKER_HOST並不似乎是一個環境變量
docker version
輸出以下
Client:
Version: 17.03.0-ce
API version: 1.26
Go version: go1.7.5
Git commit: 60ccb22
Built: Thu Feb 23 10:40:59 2017
OS/Arch: windows/amd64
Server:
Version: 17.03.0-ce
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 3a232c8
Built: Tue Feb 28 07:52:04 2017
OS/Arch: linux/amd64
Experimental: true
docker run -it --rm --net container:civilservice_web_1 busybox netstat -lnt
輸出
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.11:35455 0.0.0.0:* LISTEN
SSHD現在沿着一側的Rails應用程序運行,但我是從建立服務工作的配方是不適用於Linux的是附帶的味道正確與我的基本形象https://docs.docker.com/engine/examples/running_ssh_service/#build-an-egsshd-image
我使用的圖像是基於Debian 8的。有人能指出我的例子在哪裏壞了?
你可以用'echo $ DOCKER_HOST','docker version'和'docker run -it -rm -net container:civilservice_web_1 busybox netstat -lnt'的輸出更新你的問題嗎? – BMitch
@BMitch我添加了這些項目,雖然看起來沒有DOCKER_HOST環境變量 –
您的SSHD從不運行。每個容器一個CMD。 – user2105103