협업툴,가상환경 정리/docker_정리

docker container to container ssh 접속

알 수 없는 사용자 2022. 10. 5. 19:13

의도한건 "A docker container" 에서 "B docker container" 로 root로써 접속하려는 것.

docker-compose 를 이용해서 만들것

 

이렇게 2가지이다.

 


방법은

1. ssh 로 접속 될 도커에 ports를 포트포워딩한다.

2. root의 비밀번호를 설정한다.

3. openssh-server 를 다운 받는다.

4. "/etc/ssh/sshd_config"   스크립트 파일을 수정한다. ( "PermitRootLogin yes" )

5. ssh 서비스 리스타트 !

 

 

접속방법은

# 172.29.0.X ABC클이 같은 네트워크에선 ssh -p 22 root@172.29.0.5 또는 ssh root@172.29.0.5 로 접근
# 172.29.0.X ABC클이 다른 네트워크에선 ssh -p 2222 root@172.29.0.5


docker-compose 코드 사진

 

 

docker-compose 코드

  edge_server:
    image: osrf/ros:foxy-desktop
    #image: ubuntu:focal
    container_name: edge_server
    hostname: edge_server
    working_dir: /app
    environment:
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8
      - ROS_DISTRO=foxy
      - BASH_FILES_DIRECTORY=docker_files
    depends_on:
      - emqx_440
    networks:
      network:
        ipv4_address: "${NETWORK_ABC_CLASS}.5"
    ports:
      - '2222:22'  # 외부 포트는 2222 실제 내부로 접속되는건 22 // 포트포워딩
    expose:
      - 22   # openssh 설치 && root 패스워드 설정 && RootLogin 허용 && UsePAM 을 주석처리
    # 172.29.0.X ABC클이 같은 네트워크에선 ssh -p 22 root@172.29.0.5 또는 ssh root@172.29.0.5 로 접근
    # 172.29.0.X ABC클이 다른 네트워크에선 ssh -p 2222 root@172.29.0.5
    volumes:
      - ../:/app
      - /etc/localtime:/etc/localtime
    #restart: always
    entrypoint: >
      bash -c '
      echo "root:root" | chpasswd &&
      apt update && apt install  openssh-server sudo -y &&
      sed -i "s|#PermitRootLogin prohibit-password|PermitRootLogin yes|" /etc/ssh/sshd_config &&
      service ssh restart &&
      chmod 777 $BASH_FILES_DIRECTORY/* &&
      source $BASH_FILES_DIRECTORY/ros_entrypoint.sh &&
      source $BASH_FILES_DIRECTORY/run_colcon.sh &&
      source $BASH_FILES_DIRECTORY/start_server.sh &&
      source $BASH_FILES_DIRECTORY/sleep_to_delay_closing_time.sh
      '