Docker의 네트워크 정보

10181 단어 DockerGotech

Docker 또는 Docker Compose를 사용하여 액세스할 수 있는지 확인합니다.


개시하다


필자의 테스트 환경으로서 윈도우즈 10의 wsl2 환경에서 docker를 시작하는 환경을 구축하였다.
저는 개인적으로 Docker 컨테이너를 이동할 때 어떻게 변하는지 신경 쓰여서 확인의 의미에서 동작을 확인했습니다.

테스트 소스


폴더 구성


.
├── Dockerfile
├── docker-compose.yml
└── golang
    └── main.go

파일 내용

  • Dockerfile
  • Dockerfile
    FROM golang
    WORKDIR /app
    COPY ./golang ./
    RUN go build -o app
    CMD ./app
    
  • docker-compose.yml
  • docker-compose.yml
    version: '3'
    services:
      server1:
        build: ./
        container_name: server1
        environment: 
          NUM: "1"
        ports:
          - 8082:8080
        networks: 
          - front
      server2:
        build: ./
        container_name: server2
        environment: 
          NUM: "2"
        networks: 
          - front
          - back
      server3:
        build: ./
        container_name: server3
        environment: 
          NUM: "3"
        networks: 
          - back
    networks:
      front:
      back:
    
  • golang/main.go
  • golang/main.go
    package main
    
    import (
    	"fmt"
    	"net/http"
    	"os"
    )
    
    type Server struct {
    	Port string
    	Ip   string
    	Num  string
    }
    
    func (t *Server) Start() {
    	mux := http.NewServeMux()
    	mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    		output := "Hello World " + t.Num + "\n"
    		fmt.Fprintf(w, output)
    	})
    
    	s := http.Server{
    		Addr:    t.Ip + ":" + t.Port,
    		Handler: mux,
    	}
    
    	fmt.Println(t.Ip + ":" + t.Port + " server start")
    	s.ListenAndServe()
    }
    func main() {
    	server := Server{Port: "8080", Num: "0"}
    	if str := os.Getenv("NUM"); str != "" {
    		server.Num = str
    	}
    	server.Start()
    
    }
    

    실제 동작 시작 명령 정보


    다음 명령을 사용하여 컨테이너를 구성합니다.
    docker build -t curlserver .
    
    아래 명령을 사용하여 컨테이너 동작을 진행하였다.
    docker run --rm --name server4 -e "NUM=4" -p 8081:8080 -d curlserver
    
    이전에 이동한 서버 4와 협업하기 위해 아래 명령을 사용하여 시작합니다.
    docker run -d --rm --name server5 -e "NUM=5" --link server4 curlserver
    
    다음 명령을 통해 docker-compose에서 파일을 시작합니다.
    docker-compose up -d
    

    네트워크 상태


    실제 용기에 접근하여 ip 명령으로 ip의 상태를 확인할 때 아래 그림의 상태가 됩니다.
    ipアドレスとコンテナの関係図
    그림 ip 주소와 용기의 관계도
    다음은 DNS가 해결할 수 있는 관계식과 포트 매핑을 보여 줍니다.

    그림 컨테이너의 DNS 관계와 포트 매핑의 관계도

    잡담


    Docker 내의 용기 간에 네트워크 협업 방법이 있는지 조사합니다./etc/hosts와/etc/resolv.conf에 등록된 정보를 확인하면 어느 정도 조사를 진행할 수 있습니다.

    좋은 웹페이지 즐겨찾기