Docker의 네트워크 정보
Docker 또는 Docker Compose를 사용하여 액세스할 수 있는지 확인합니다.
개시하다
필자의 테스트 환경으로서 윈도우즈 10의 wsl2 환경에서 docker를 시작하는 환경을 구축하였다.
저는 개인적으로 Docker 컨테이너를 이동할 때 어떻게 변하는지 신경 쓰여서 확인의 의미에서 동작을 확인했습니다.
테스트 소스
폴더 구성
.
├── Dockerfile
├── docker-compose.yml
└── golang
└── main.go
파일 내용
FROM golang
WORKDIR /app
COPY ./golang ./
RUN go build -o app
CMD ./app
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:
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 주소와 용기의 관계도
다음은 DNS가 해결할 수 있는 관계식과 포트 매핑을 보여 줍니다.
그림 컨테이너의 DNS 관계와 포트 매핑의 관계도
잡담
Docker 내의 용기 간에 네트워크 협업 방법이 있는지 조사합니다./etc/hosts와/etc/resolv.conf에 등록된 정보를 확인하면 어느 정도 조사를 진행할 수 있습니다.
Reference
이 문제에 관하여(Docker의 네트워크 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/karosu/articles/19af9aa240a9fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)