Docker는 컨테이너 간 통신을 위한 다양한 방법을 제공합니다. 이를 위해서는 컨테이너 간 네트워크를 설정해야 합니다.

  1. 사용자 정의 브리지 네트워크 생성 Docker에서는 사용자 정의 브리지 네트워크를 생성하여 두 개 이상의 컨테이너가 동일한 네트워크에서 통신할 수 있습니다. 먼저, 다음 명령어로 사용자 정의 브리지 네트워크를 생성합니다.
docker network create my-network

그리고 컨테이너를 실행할 때, --net 옵션을 사용하여 해당 네트워크에 연결합니다.

docker run --name container1 --net my-network image1
docker run --name container2 --net my-network image2

이제 container1에서 container2로 통신이 가능해집니다.

  1. 호스트 네트워크 사용 컨테이너가 호스트와 동일한 네트워크를 사용하도록 설정할 수 있습니다. 다음과 같이 --net=host 옵션을 사용하여 호스트 네트워크를 사용할 수 있습니다.
docker run --name container1 --net=host image1
docker run --name container2 --net=host image2

이제 container1에서 container2로 바로 통신이 가능합니다.

  1. 링크(Link) 사용 Docker는 --link 옵션을 사용하여 컨테이너 간 통신을 가능하게 합니다. 이 옵션을 사용하면, 명령어에서 컨테이너 이름을 지정할 수 있으며, 그에 따라 해당 컨테이너의 IP 주소 및 환경 변수를 사용할 수 있습니다.
docker run --name container1 --link container2:image2 image1

위의 예시에서 container1은 container2의 IP 주소 및 환경 변수를 사용할 수 있게 됩니다.

Docker는 위와 같은 방법을 통해 컨테이너 간 통신을 가능하게 합니다. 이를 통해 각각의 컨테이너는 독립적으로 실행되면서도 필요한 경우 다른 컨테이너와 연결하여 통신할 수 있습니다.

참고 문헌: [1] https://stackoverflow.com/questions/55862431/how-to-communicate-between-two-containers-using-docker[2] https://www.tutorialworks.com/container-networking/[3] https://stackoverflow.com/questions/30545023/how-to-communicate-between-docker-containers-via-hostname

'개발 > Docker' 카테고리의 다른 글

도커 기본 명령어 설명 (Docker basic commands)  (0) 2023.03.09

컨테이너 기반 가상화 기술인 Docker에서 가장 많이 사용되는 50가지 기본 명령어에 대해 설명하고, 예시를 보여드리겠습니다.

  1. docker run - 컨테이너를 생성하고 실행합니다. 예시: docker run -it ubuntu /bin/bash
  2. docker ps - 실행 중인 컨테이너 목록을 확인합니다. 예시: docker ps
  3. docker stop - 실행 중인 컨테이너를 정지합니다. 예시: docker stop <컨테이너 ID>
  4. docker images - 로컬 이미지 목록을 확인합니다. 예시: docker images
  5. docker rmi - 로컬 이미지를 삭제합니다. 예시: docker rmi <이미지 ID>
  6. docker build - Dockerfile을 사용하여 이미지를 빌드합니다. 예시: docker build -t my-image:latest .
  7. docker logs - 컨테이너 로그를 확인합니다. 예시: docker logs <컨테이너 ID>
  8. docker inspect - 컨테이너 또는 이미지에 대한 세부 정보를 확인합니다. 예시: docker inspect <컨테이너 또는 이미지 ID>
  9. docker exec - 실행 중인 컨테이너에서 명령을 실행합니다. 예시: docker exec -it <컨테이너 ID> /bin/bash
  10. docker push - 이미지를 Docker Hub 또는 다른 Docker 레지스트리에 푸시합니다. 예시: docker push my-image:latest
  11. docker pull - Docker Hub 또는 다른 Docker 레지스트리에서 이미지를 가져옵니다. 예시: docker pull ubuntu:latest
  12. docker network create - Docker 네트워크를 생성합니다. 예시: docker network create my-network
  13. docker network ls - Docker 네트워크 목록을 확인합니다. 예시: docker network ls
  14. docker network connect - 컨테이너를 Docker 네트워크에 연결합니다. 예시: docker network connect my-network <컨테이너 ID>
  15. docker network disconnect - 컨테이너를 Docker 네트워크에서 분리합니다. 예시: docker network disconnect my-network <컨테이너 ID>
  16. docker port - 컨테이너의 포트 매핑 정보를 확인합니다. 예시: docker port <컨테이너 ID>
  17. docker rename - 컨테이너의 이름을 변경합니다. 예시: docker rename old-name new-name
  18. docker rm - 컨테이너를 삭제합니다. 예시: docker rm <컨테이너 ID>
  19. docker attach - 실행 중인 컨테이너에 접속합니다. 예시: docker attach <컨테이너 ID>
  20. docker cp - 컨테이너와 호스트 간에 파일
  21. docker cp - 컨테이너와 호스트 간에 파일을 복사합니다. 예시: docker cp <컨테이너 ID>:<컨테이너 내부 경로> <호스트 경로>
  22. docker commit - 컨테이너에서 새로운 이미지를 생성합니다. 예시: docker commit <컨테이너 ID> my-image:latest
  23. docker save - 이미지를 tar 파일로 저장합니다. 예시: docker save my-image:latest > my-image.tar
  24. docker load - tar 파일에서 이미지를 로드합니다. 예시: docker load < my-image.tar
  25. docker history - 이미지의 빌드 기록을 확인합니다. 예시: docker history my-image:latest
  26. docker tag - 이미지에 새로운 태그를 추가합니다. 예시: docker tag my-image:latest my-image:newtag
  27. docker search - Docker Hub에서 이미지를 검색합니다. 예시: docker search mysql
  28. docker stats - 실행 중인 컨테이너의 리소스 사용량을 확인합니다. 예시: docker stats <컨테이너 ID>
  29. docker top - 실행 중인 컨테이너에서 실행 중인 프로세스를 확인합니다. 예시: docker top <컨테이너 ID>
  30. docker wait - 컨테이너가 종료될 때까지 대기합니다. 예시: docker wait <컨테이너 ID>
  31. docker events - Docker 이벤트를 모니터링합니다. 예시: docker events
  32. docker pause - 실행 중인 컨테이너를 일시 중지합니다. 예시: docker pause <컨테이너 ID>
  33. docker unpause - 일시 중지된 컨테이너를 다시 시작합니다. 예시: docker unpause <컨테이너 ID>
  34. docker update - 실행 중인 컨테이너의 설정을 업데이트합니다. 예시: docker update --cpus 2 <컨테이너 ID>
  35. docker diff - 컨테이너에서 파일 시스템의 변경 사항을 확인합니다. 예시: docker diff <컨테이너 ID>
  36. docker export - 컨테이너를 tar 파일로 내보냅니다. 예시: docker export <컨테이너 ID> > my-container.tar
  37. docker import - tar 파일에서 컨테이너를 생성합니다. 예시: docker import my-container.tar my-image:latest
  38. docker system df - Docker 시스템의 디스크 사용량을 확인합니다. 예시: docker system df
  39. docker system prune - 사용하지 않는 컨테이너, 이미지 등을 삭제합니다. 예시: docker system prune
  40. docker version - Docker 버전 정보를 확인합니다. 예시: docker version
  41. docker info - Docker 시스템 정보를 확인합니다. 예시: docker info
  42. docker login
  43. docker login - Docker Hub 또는 다른 Docker 레지스트리에 로그인합니다. 예시: docker login
  44. docker logout - Docker Hub 또는 다른 Docker 레지스트리에서 로그아웃합니다. 예시: docker logout
  45. docker system events - Docker 시스템 이벤트를 모니터링합니다. 예시: docker system events
  46. docker system info - Docker 시스템 정보를 상세하게 확인합니다. 예시: docker system info
  47. docker system prune - 사용하지 않는 리소스를 삭제합니다. 예시: docker system prune
  48. docker system events --since '2022-01-01' - 특정 날짜 이후의 Docker 이벤트를 모니터링합니다. 예시: docker system events --since '2022-01-01'
  49. docker system events --filter 'event=start' - 특정 이벤트만 모니터링합니다. 예시: docker system events --filter 'event=start'
  50. docker inspect -f '{{.NetworkSettings.IPAddress}}' <컨테이너 ID> - 컨테이너의 IP 주소를 확인합니다. 예시: docker inspect -f '{{.NetworkSettings.IPAddress}}' my-container
  51. docker run -p 80:80 nginx - 호스트의 포트와 컨테이너의 포트를 매핑합니다. 예시: docker run -p 8080:80 nginx
  52. docker run -v /host/path:/container/path - 호스트 경로와 컨테이너 경로를 연결합니다. 예시: docker run -v /data:/app/data my-image:latest
  53. docker run -e <환경 변수> - 컨테이너에서 사용할 환경 변수를 설정합니다. 예시: docker run -e MYSQL_ROOT_PASSWORD=pass1234 mysql:latest
  54. docker run -d - 컨테이너를 백그라운드 모드로 실행합니다. 예시: docker run -d my-image:latest
  55. docker-compose up - Docker Compose를 사용하여 여러 컨테이너를 실행합니다. 예시: docker-compose up
  56. docker-compose down - Docker Compose로 실행한 컨테이너를 정지합니다. 예시: docker-compose down
  57. docker-compose build - Docker Compose에서 정의된 서비스를 빌드합니다. 예시: docker-compose build
  58. docker-compose logs - Docker Compose로 실행한 서비스의 로그를 확인합니다. 예시: docker-compose logs
  59. docker-compose ps - Docker Compose로 실행한 서비스 목록을 확인합니다. 예시: docker-compose ps
  60. docker-compose run - Docker Compose에서 서비스를 실행합니다. 예시: docker-compose run my-service /bin/bash
  61. docker-compose restart - Docker Compose에서 서비스를 재시작합니다. 예시: docker-compose restart my-service
  62. docker-compose stop - Docker Compose에서 서비스를 정지합니다. 예시: docker-compose stop my-service
  63. docker-compose pull - Docker Compose에서 정의된 서비스의 이미지를 가져옵니다. 예시: docker-compose pull
  64. docker-compose exec - Docker Compose에서 실행 중인 서비스에서 명령을 실행합니다. 예시: docker-compose exec my-service /bin/bash
  65. docker-compose up -d - Docker Compose로 여러 서비스를 백그라운드 모드로 실행합니다. 예시: docker-compose up -d
  66. docker-compose down -v - Docker Compose로 실행한 컨테이너와 볼륨을 모두 삭제합니다. 예시: docker-compose down -v
  67. docker swarm init - Docker Swarm 모드를 초기화합니다. 예시: docker swarm init
  68. docker swarm join - 다른 노드를 Docker Swarm 클러스터에 추가합니다. 예시: docker swarm join --token <토큰> <매니저 노드 주소>
  69. docker service create - Docker Swarm 모드에서 서비스를 생성합니다. 예시: docker service create --name my-service my-image:latest
  70. docker service scale - Docker Swarm 모드에서 서비스의 인스턴스 수를 조정합니다. 예시: docker service scale my-service=5
  71. docker service ls - Docker Swarm 모드에서 실행 중인 서비스 목록을 확인합니다. 예시: docker service ls
  72. docker service logs - Docker Swarm 모드에서 실행 중인 서비스의 로그를 확인합니다. 예시: docker service logs my-service
  73. docker service ps - Docker Swarm 모드에서 실행 중인 서비스의 태스크 목록을 확인합니다. 예시: docker service ps my-service
  74. docker service update - Docker Swarm 모드에서 서비스의 설정을 업데이트합니다. 예시: docker service update --image my-image:latest my-service
  75. docker stack deploy - Docker Swarm 모드에서 스택을 배포합니다. 예시: docker stack deploy --compose-file docker-compose.yml my-stack
  76. docker stack rm - Docker Swarm 모드에서 스택을 제거합니다. 예시: docker stack rm my-stack
  77. docker node ls - Docker Swarm 클러스터에 속한 노드 목록을 확인합니다. 예시: docker node ls
  78. docker node inspect - Docker Swarm 클러스터의 노드에 대한 정보를 확인합니다. 예시: docker node inspect <노드 ID>
  79. docker node update - Docker Swarm 클러스터의 노드 설정을 업데이트합니다. 예시: docker node update --availability drain <노드 ID>
  80. docker stack services - Docker Swarm 모드에서 스택에 속한 서비스 목록을 확인합니다. 예시: docker stack services my-stack
  81. docker stack ps - Docker Swarm 모드에서 스택에 속한 태스크 목록을 확인합니다. 예시: docker stack ps my-stack
  82. docker secret create - Docker Swarm 모드에서 시크릿을 생성합니다. 예시: echo "mysecret" | docker secret create my-secret -
  83. docker secret ls - Docker Swarm 모드에서 시크릿 목록을 확인합니다. 예시: docker secret ls
  84. docker secret inspect - Docker Swarm 모드에서 시크릿에 대한 정보를 확인합니다. 예시: docker secret inspect my-secret
  85. docker secret rm - Docker Swarm 모드에서 시크릿을 삭제합니다. 예시: docker secret rm my-secret
  86. docker config create - Docker Swarm 모드에서 설정을 생성합니다. 예시: echo "myconfig" | docker config create my-config -
  87. docker config ls - Docker Swarm 모드에서 설정 목록을 확인합니다. 예시: docker config ls
  88. docker config inspect - Docker Swarm 모드에서 설정에 대한 정보를 확인합니다. 예시: docker config inspect my-config
  89. docker config rm - Docker Swarm 모드에서 설정을 삭제합니다. 예시: docker config rm my-config
  90. docker swarm leave - Docker Swarm 클러스터에서 노드를 제거합니다. 예시: docker swarm leave --force
  91. docker swarm update - Docker Swarm 클러스터의 설정을 업데이트합니다. 예시: docker swarm update --cert-expiry 72h
  92. docker plugin install - Docker 플러그인을 설치합니다. 예시: docker plugin install my-plugin
  93. docker plugin ls - Docker 플러그인 목록을 확인합니다. 예시: docker plugin ls
  94. docker plugin rm - Docker 플러그인을 삭제합니다. 예시: docker plugin rm my-plugin
  95. docker system prune -a - 사용하지 않는 모든 리소스를 삭제합니다. 예시: docker system prune -a
  96. docker system events --filter 'type=container' - 실행 중인 컨테이너 이벤트만 모니터링합니다. 예시: docker system events --filter 'type=container'
  97. docker stats <컨테이너 ID> --no-stream - 컨테이너의 리소스 사용량을 한 번만 확인합니다. 예시: docker stats my-container --no-stream

'개발 > Docker' 카테고리의 다른 글

Docker 컨테이너 통신  (0) 2023.03.09

+ Recent posts