[Docker] SSH 연결 문제와 Docker 설정: 원인부터 해결까지

2024. 11. 20. 13:57· Docker
목차
  1. 🐳 SSH 연결 문제와 Docker 설정: 원인부터 해결까지
  2. 1. 🌟 문제 상황
  3. 2. 🔍 원인 분석
  4. 2.1 Docker 네트워크 기본값 이해하기
  5. 2.2 브리지 네트워크란?
  6. 2.3 충돌의 영향
  7. 3. 🛠 해결 방법: daemon.json 설정
  8. 3.1 daemon.json 기본 구조
  9. 3.2 주요 설정 항목
  10. 4. 💻 실습: daemon.json 수정
  11. 4.1 설정 파일 열기
  12. 4.2 수정 내용
  13. 5. 🔄 적용 및 확인
  14. 5.1 Docker 데몬 재시작
  15. 5.2 설정 적용 확인
  16. 6. ⚠️ 주의 사항
  17. 7. 🚀 요약 및 결론
반응형

🐳 SSH 연결 문제와 Docker 설정: 원인부터 해결까지

Docker 사용 중 서버에 SSH로 접속하여 도커 명령어를 실행하려고 할 때 접속이 끊기는 문제가 발생했습니다. 이 문제는 Docker의 IP 대역 충돌에서 비롯되었습니다. 앞으로 이러한 오류를 방지하기위해 이번 포스팅에서는 문제의 원인을 깊이 이해하고, 이를 해결하기 위한 방법인 daemon.json 설정 수정절차를 단계별로 알아보겠습니다.


1. 🌟 문제 상황

문제
로컬 PC에서 서버에 SSH로 접속 후 Docker를 실행하면 접속이 끊기거나 오류가 발생.

 

이 상황은 일반적으로 다음 이유 때문에 발생합니다.

  1. Docker의 기본 네트워크 IP 대역인 172.17.0.0/16이 로컬 네트워크의 IP 대역과 겹칠 때 충돌.
  2. 충돌로 인해 Docker의 브리지 네트워크와 SSH 연결 간에 패킷이 잘못 라우팅되거나 차단됨.

2. 🔍 원인 분석

2.1 Docker 네트워크 기본값 이해하기

Docker는 컨테이너 간 통신을 위해 가상 네트워크를 생성합니다. 기본적으로 다음과 같은 네트워크 대역을 사용합니다.

  • 브리지 네트워크 IP 대역: 172.17.0.0/16
  • Docker는 브리지 네트워크를 통해 컨테이너와 호스트 간 통신을 중계.

2.2 브리지 네트워크란?

브리지 네트워크는 호스트 머신과 Docker 컨테이너 간 가상 네트워크입니다.

  • 기본적으로 Docker는 브리지 네트워크를 통해 컨테이너 간 통신과 외부 네트워크 연결을 관리합니다.
  • 호스트 머신의 네트워크와 독립적으로 동작하므로 네트워크 격리를 제공합니다.
예:
  • 호스트 머신: 192.168.1.10
  • Docker 컨테이너 네트워크: 172.17.0.0/16
    이처럼 서로 다른 대역을 가지므로 네트워크 충돌이 없어야 하지만, 로컬 네트워크 대역이 중복되면 문제가 발생합니다.

2.3 충돌의 영향

  • SSH 연결 차단: 네트워크 충돌로 인해 SSH 연결 패킷이 손실될 수 있습니다.
  • Docker 작동 문제: 네트워크 충돌은 Docker 컨테이너 간 통신에도 문제를 유발합니다.

3. 🛠 해결 방법: daemon.json 설정

문제를 해결하려면 Docker의 네트워크 IP 대역을 변경하여 충돌을 방지해야 합니다. 이를 위해 /etc/docker/daemon.json 파일을 수정합니다.

3.1 daemon.json 기본 구조

daemon.json은 Docker 데몬의 설정 파일로, JSON 형식으로 작성됩니다. 이 파일을 통해 Docker의 기본 동작을 커스터마이징할 수 있습니다.

3.2 주요 설정 항목

아래는 문제 해결과 관련된 주요 설정 항목입니다:

  1. data-root: Docker 데이터 경로를 변경.
  2. bip: 브리지 네트워크 IP 대역 설정.
  3. default-address-pools: Docker Compose의 네트워크 대역 설정.
  4. insecure-registries: HTTP로 접근 가능한 프라이빗 레지스트리 설정.
  5. registry-mirrors: Docker Hub 미러 설정.

4. 💻 실습: daemon.json 수정

4.1 설정 파일 열기

sudo vi /etc/docker/daemon.json

4.2 수정 내용

{
    // Docker Root 경로 설정
    "data-root": "/data/docker",

    // 기본 Docker 브리지 네트워크 설정 (충돌 방지용 IP 대역)
    "bip": "192.172.100.1/24",

    // Docker Compose의 기본 네트워크 대역 설정
    "default-address-pools": [
        {
            "base": "192.172.100.1/16",
            "size": 24
        }
    ],

    // Docker 레지스트리 HTTP 연결 허용
    "insecure-registries": ["10.20.100.1:5000"],

    // Docker Hub 미러 설정
    "registry-mirrors": ["https://<my-docker-mirror-host>"]
}

설명

  • bip: Docker 브리지 네트워크의 기본 IP 대역을 변경.
  • default-address-pools: Docker Compose에서 기본 네트워크 대역을 별도로 설정.
  • insecure-registries: HTTP로 동작하는 프라이빗 레지스트리를 허용.
  • registry-mirrors: Docker Hub 대안 미러 설정.

5. 🔄 적용 및 확인

5.1 Docker 데몬 재시작

설정을 저장한 후 Docker 데몬을 재시작합니다:

sudo systemctl restart docker

5.2 설정 적용 확인

변경된 네트워크 대역을 확인하려면 다음 명령어를 실행:

docker network inspect bridge

출력에서 Subnet이 새로 설정한 대역으로 변경되었는지 확인합니다:

{
    "Subnet": "192.172.100.1/24"
}

6. ⚠️ 주의 사항

  1. 서버 재부팅 필요 여부: 일부 환경에서는 Docker 데몬 재시작만으로 충분하지만, 네트워크 충돌로 인해 시스템 재부팅이 필요할 수도 있습니다.
  2. 구성 파일 JSON 유효성 검사: JSON 파일 수정 시 유효한 형식인지 반드시 확인.
  3. 기존 네트워크 삭제: 기존 컨테이너의 네트워크 설정은 변경되지 않을 수 있으므로 필요시 네트워크를 삭제 후 다시 생성:
    docker network rm <network_name>

7. 🚀 요약 및 결론

  • 원인: Docker와 로컬 네트워크 간의 IP 대역 충돌로 SSH 연결이 차단됨.
  • 해결책: daemon.json 파일에서 bip 및 default-address-pools 설정으로 네트워크 대역 변경.
  • 주요 명령어:
    • 설정 파일 열기: sudo vi /etc/docker/daemon.json
    • Docker 재시작: sudo systemctl restart docker
    • 네트워크 확인: docker network inspect bridge

위 내용을 따라가며 설정을 적용하면 Docker 네트워크 충돌 문제를 깔끔하게 해결할 수 있습니다. 더 궁금한 점이 있으면 댓글로 남겨주세요! 😄

반응형
저작자표시 비영리 변경금지 (새창열림)

'Docker' 카테고리의 다른 글

[Docker]Docker를 이용해 MariaDB 설치하기  (0) 2024.11.22
[Docker] 리눅스에서 Docker 설치 및 실행 방법  (0) 2024.11.19
[Docker] Dockerfile 작성법  (0) 2024.11.18
[Docker] Docker란 무엇인가?  (5) 2024.11.10
[Docker] 네트워크 변경(네트워크 중복으로 인한 접속 불가능), HTTP 허용, Root 경로 수정 daemon.json 설정  (0) 2023.12.04
  1. 🐳 SSH 연결 문제와 Docker 설정: 원인부터 해결까지
  2. 1. 🌟 문제 상황
  3. 2. 🔍 원인 분석
  4. 2.1 Docker 네트워크 기본값 이해하기
  5. 2.2 브리지 네트워크란?
  6. 2.3 충돌의 영향
  7. 3. 🛠 해결 방법: daemon.json 설정
  8. 3.1 daemon.json 기본 구조
  9. 3.2 주요 설정 항목
  10. 4. 💻 실습: daemon.json 수정
  11. 4.1 설정 파일 열기
  12. 4.2 수정 내용
  13. 5. 🔄 적용 및 확인
  14. 5.1 Docker 데몬 재시작
  15. 5.2 설정 적용 확인
  16. 6. ⚠️ 주의 사항
  17. 7. 🚀 요약 및 결론
'Docker' 카테고리의 다른 글
  • [Docker]Docker를 이용해 MariaDB 설치하기
  • [Docker] 리눅스에서 Docker 설치 및 실행 방법
  • [Docker] Dockerfile 작성법
  • [Docker] Docker란 무엇인가?
TaeHuiLee
TaeHuiLee
창업, 사업, 자기개발, 운동, Web, App, Java, python, 이슈, 개발자, JavaScript, amazon, cloud server, 취업, 스펙, Android Studio, Spring, React, Node.js, 구독하면 댓글 남겨주세요.
TaeHuiLee
Developer_TaeHui
TaeHuiLee
  • 분류 전체보기 (228)
    • WEB (71)
    • Java (38)
    • APP (17)
    • 딥러닝 (2)
    • DB (5)
    • 알고리즘 (17)
    • Python (10)
    • AWS (5)
    • Git (8)
    • Docker (13)
    • 창업 (2)
    • Java Script (5)
    • 군집드론 (3)
    • C언어 (1)
    • IT 지식 (16)
    • Rust (1)
    • Tomcat (1)
    • Nginx (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬
  • Nuxt
  • 서울 맛집
  • 티스토리챌린지
  • 정렬
  • docker
  • 관상 어플
  • 자바
  • javascript
  • Spring
  • python
  • Java
  • mariadb
  • DB
  • VUE
  • 수원 맛집
  • 오블완
  • github
  • 선택정렬
  • 어플
  • 도커
  • axios
  • WSL
  • 강릉 맛집
  • 수원역 맛집
  • 알고리즘
  • Queue
  • GIT
  • spring boot
  • ubuntu

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
TaeHuiLee
[Docker] SSH 연결 문제와 Docker 설정: 원인부터 해결까지
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.