Docker와 Linux: 컨테이너 간 네트워크 통신을 구현하는 방법은 무엇입니까?
Docker 및 Linux: 컨테이너 간 네트워크 통신을 구현하는 방법은 무엇입니까?
인용문:
컨테이너 기술은 최신 애플리케이션의 개발 및 배포에 중요한 역할을 합니다. 컨테이너 기술을 사용하면 애플리케이션과 해당 종속성을 독립적인 컨테이너에 패키징할 수 있으므로 애플리케이션의 이식성과 일관성이 보장됩니다. 그러나 네트워크 통신을 활성화하기 위해 여러 컨테이너를 연결해야 하는 경우 컨테이너 간 네트워크 통신을 구성하는 것이 매우 중요합니다. 이 기사에서는 Docker와 Linux 환경에서 컨테이너 간의 네트워크 통신을 구현하는 방법을 소개합니다.
- Docker의 네트워크 모드
Docker는 컨테이너 네트워크 통신을 지원하기 위해 다음과 같은 네 가지 네트워크 모드를 제공합니다. - 브리지 모드(브리지): 기본 모드에서는 컨테이너가 가상 브리지를 통해 호스트 네트워크에 연결됩니다.
- 호스트 모드(host): 컨테이너는 네트워크 격리 없이 호스트 네트워크를 직접 사용합니다.
- 없음 모드: 컨테이너에는 네트워크 인터페이스가 없으며 외부 네트워크와 완전히 격리됩니다.
- 컨테이너 모드(컨테이너): 컨테이너는 네트워크 네임스페이스를 공유하며 다른 컨테이너에 직접 액세스할 수 있습니다.
- 컨테이너 간 네트워크 통신 예시
다음으로 간단한 예시를 통해 Docker와 Linux 환경에서 컨테이너 간 네트워크 통신을 구현하는 방법을 보여드리겠습니다. 두 개의 컨테이너가 있다고 가정합니다. 하나는 웹 컨테이너이고 다른 하나는 db 컨테이너입니다. 웹 컨테이너가 db 컨테이너에서 제공하는 데이터베이스에 액세스할 수 있기를 바랍니다.
먼저 컨테이너 간 통신을 위한 네트워크를 만들어야 합니다. 다음 명령을 사용하여 my_network라는 브리지 네트워크를 생성할 수 있습니다.
$ docker network create my_network
다음으로 웹 서비스를 제공하기 위한 웹 컨테이너를 생성하고 실행해야 합니다. 다음 명령을 사용하여 web_container라는 컨테이너를 생성하고 이를 my_network 네트워크에 연결할 수 있습니다.
$ docker run -d --name web_container --network my_network web_image
여기서 web_image는 우리가 직접 만든 웹 컨테이너 이미지입니다.
그 다음에는 데이터베이스 서비스를 제공하기 위한 db 컨테이너를 생성하고 실행해야 합니다. 다음 명령을 사용하여 db_container라는 컨테이너를 생성하고 이를 my_network 네트워크에 연결할 수 있습니다.
$ docker run -d --name db_container --network my_network db_image
그 중 db_image는 우리가 직접 구축한 db 컨테이너 이미지입니다.
이제 두 개의 컨테이너를 만들어 동일한 네트워크에 연결했습니다. 다음으로 웹 컨테이너가 db 컨테이너에서 제공하는 데이터베이스에 액세스할 수 있는지 확인해야 합니다.
웹 컨테이너에서는 db_container라는 이름을 사용하여 액세스할 수 있습니다. 예를 들어 웹 컨테이너의 코드에서 다음 연결 문자열을 사용하여 데이터베이스에 연결할 수 있습니다.
jdbc:mysql://db_container:3306/my_database
이 연결 문자열에서 db_container는 db 컨테이너의 이름이고, 3306은 데이터베이스의 기본 포트 번호입니다. my_database는 데이터베이스의 이름입니다.
위 단계를 통해 웹 컨테이너와 DB 컨테이너 간의 네트워크 통신을 성공적으로 구현했습니다. 웹 컨테이너는 컨테이너 이름을 통해 db 컨테이너가 제공하는 데이터베이스 서비스에 접근할 수 있습니다.
결론:
Docker 및 Linux 환경에서는 네트워크 모드를 구성하고 네트워크를 생성하여 컨테이너 간 네트워크 통신을 구현할 수 있습니다. 네트워크 연결을 적절하게 설정함으로써 컨테이너 간의 통신 채널을 구축하여 다중 컨테이너 배포 및 애플리케이션의 분산 아키텍처를 활성화할 수 있습니다.
코드 샘플:
웹 컨테이너용 Dockerfile:
FROM ubuntu:latest RUN apt-get update RUN apt-get install -y apache2 EXPOSE 80 CMD ["apache2ctl", "-D", "FOREGROUND"]
DB 컨테이너용 Dockerfile:
FROM ubuntu:latest RUN apt-get update RUN apt-get install -y mysql-server EXPOSE 3306 CMD ["mysqld"]
웹 컨테이너용 Java 코드 샘플:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Main { public static void main(String[] args) { String url = "jdbc:mysql://db_container:3306/my_database"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { String query = "SELECT * FROM my_table"; ResultSet rs = stmt.executeQuery(query); while (rs.next()) { System.out.println(rs.getString("column1")); } } catch (SQLException e) { e.printStackTrace(); } } }
이상은 Docker와 Linux 환경에서 컨테이너 간 네트워크 통신을 구현하는 방법에 대한 것입니다. 그리고 예. 올바른 네트워크 구성 및 연결 설정을 통해 컨테이너 간에 쉽게 통신하고 보다 유연하고 확장 가능한 애플리케이션 아키텍처를 구축할 수 있습니다.
위 내용은 Docker와 Linux: 컨테이너 간 네트워크 통신을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









이 기사는 패턴 매칭, 파일 검색 및 텍스트 조작을 위해 Linux에서 정규식 (Regex)을 사용하는 방법, 구문, 명령 및 Grep, Sed 및 Awk와 같은 도구를 자세히 설명합니다.

이 기사는 Google Authenticator를 사용하여 Linux에서 SSH에 대한 2 단계 인증 (2FA) 설정, 설치, 구성 및 문제 해결 단계에 대한 가이드를 제공합니다. Enhanced SEC와 같은 2FA의 보안 이점을 강조합니다.

이 기사는 Linux 시스템 성능을 모니터링하기위한 Top, HTOP 및 VMSTAT 사용에 대해 설명하고 효과적인 시스템 관리를위한 고유 한 기능 및 사용자 정의 옵션을 자세히 설명합니다.

이 기사는 필수 액세스 제어를 제공하는 Linux 커널 보안 모듈 인 Selinux와 Apparmor를 비교합니다. 접근 방식의 차이 (정책 기반 대 프로필 기반) 및 잠재적 성능 영향을 강조하는 구성을 자세히 설명합니다.

이 기사는 Linux 시스템 백업 및 복원 방법에 대해 자세히 설명합니다. 전체 시스템 이미지 백업을 증분 백업과 비교하고 최적의 백업 전략 (규칙, 여러 위치, 버전, 테스트, 보안, 회전) 및 DA에 대해 설명합니다.

이 기사는 Linux의 Sudo 권한을 관리하는 방법, 보안 및 보안 모범 사례를 포함하여 Linux의 Sudo 권한을 관리하는 방법을 설명합니다. 주요 초점은 /etc /sudoers를 안전하게 편집하고 액세스를 제한하는 데 중점을 둡니다. 문자 수 : 159

이 기사는 방화구 및 iptables를 사용하여 Linux 방화벽 구성을 비교합니다. Firewalld는 영역 및 서비스 관리를위한 사용자 친화적 인 인터페이스를 제공하는 반면, iPtables는 NetFilter FRA의 명령 줄 조작을 통해 저수준 제어를 제공합니다.

기사는 APT, YUM 및 DNF를 사용하여 Linux의 소프트웨어 패키지 관리, 설치, 업데이트 및 제거를 다루는 것에 대해 설명합니다. 다양한 분포에 대한 기능과 적합성을 비교합니다.
