포스트

LG CNS 부트캠프 학습일지 54일차

학습 내용

  • 컨테이너들을 하나의 네트워크로 묶어서 통신하기
  • Docker Compose 사용법

컨테이너들을 하나의 네트워크로 묶어서 통신하기

도커 네트워크를 만들어 주어야 한다.

1
docker network create --driver bridge my-network

네트워크를 만든 후에는 도커 컨테이너를 실행할 때 네트워크 옵션을 전달해주어야 한다.

1
docker run --network my-network my-image:1.0.0

만약 같은 네트워크에 있는 다른 컨테이너와 통신을 해야한다면 다른 컨테이너의 이름을 호스트명으로 사용할 수 있다.

1
docker run --network my-network --environment URL_TO_OTHER_CONTAINER=http://other-container:8080 my-image:1.0.0

도커 컨테이너는 네트워크 설정값이 별도로 주어지지 않는다면 내장된 bridge 네트워크에 연결된다. 주의할 점이 있는데, 내장된 bridge 네트워크에 연결되었을 때는 다른 컨테이너 이름을 호스트명으로 사용하지 못한다.

Docker Compose 사용법

platformbuild.platforms라는 설정값이 있다.

1
2
3
4
service:
  my-service:
    platform: linux/amd64
    ...
1
2
3
4
5
6
7
service:
  my-service:
    build:
      platforms:
        - linux/arm64
        - linux/amd64
    ...

platform은 이런 아키텍처로 서비스를 실행해달라는 의미라는 반면, build/platforms는 이미지를 해당 플랫폼에 대응하여 만들어달라는 의미이다. 사용자 입장에서는 CPU 아키텍처가 이미 정해져있기 때문에 platform의 값을 명시하는 경우는 드물 것이고, 개발자 입장에서는 여러 아키텍처에 대응해서 이미지를 만들 것이기 때문에 build.platforms를 사용하는 경우가 많을 것 같았다.

docker run 명령어를 사용할 때는 docker network create 명령어를 사용해서 네트워크를 별도로 만들어주어야했다. 하지만 docker-compose 명령어를 사용할 때는 네트워크가 자동으로 만들어진다. 만약 이미 만들어진 네트워크를 사용한다면 network 설정값을 만들어주어야 한다.

1
2
3
4
5
6
7
8
9
service:
  my-service:
    networks:
	  - my-network
    ...
	
network: 
  my-network:
    driver: bridge

Named Volume을 사용할 때도 마찬가지로 docker-compose.yml 파일 안에 정의해주면 된다.

1
2
3
4
5
6
7
8
service:
  my-service:
    volumes:
	  - my-volume:/path/to/volume
    ...
	
volumes: 
  my-volume:
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Comments powered by Disqus.