저는 Ruby on Rails 환경을 가지고 있으며 Docker에서 실행되도록 변환 중입니다. 이것은 주로 개발 컴퓨터가 Windows 랩탑이고 서버가 그렇지 않기 때문입니다. Docker 컨테이너가 주로 실행 중이며 지금은 RubyMine 디버거에 연결하려고합니다. 이 작업을 수행하려면 컨테이너에 SSH 서버를 설치하는 것이 좋습니다. Windows에서 Docker 컨테이너 내 SSHD에 연결하는 방법은 무엇입니까?
나는 성공적으로 (가 고정 표시기 - compose.yml의 포트 매핑 작동하지 않았기 때문에) 마이너스 (22)에 노출 https://docs.docker.com/engine/examples/running_ssh_service/#build-an-egsshd-image에서 dockerfile 라인을 사용하여 컨테이너에 SSHD를 추가했다. 내가 로컬 호스트 및 3022에서 PUTTY을 가리 키도록하려고하면 그러나 포트가 로컬 컴퓨터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
에 액세스 할 수 없습니다, 서버가 연결이 갑자기 닫혀 있다고 말한다.
무엇이 여기에 있습니까?
이 내 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
출력되도록 나타나지
다음
,451,515,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는 이제 사이드 레일 응용 프로그램에 따라 실행되고 있지만이 서비스를 설정에서 작업 된 조리법 온 리눅스의 맛에 대한 정확하지 않습니다 내 기본 이미지로 https://docs.docker.com/engine/examples/running_ssh_service/#build-an-egsshd-image
사용중인 이미지는 데비안 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