상세 컨텐츠

본문 제목

Docker - 도커 네트워크

Development/Docker

by thisisnew 2022. 11. 15. 00:05

본문

반응형

 

8. 여러 컨테이너의 연결

 

8-1. 도커 네트워크

 

https://scaleyourapp.com/web-application-architecture-explained/

일반적인 웹 사이트는 위의 사진과 같은 모양을 띄고 있습니다.

여러 종류의 서버가 연동되어 각자의 역할을 하는 것이죠.

가령 웹 서버가 처리한 것을 필요에 따라 데이터베이스에 저장하는 식으로요.

 

지금까지 배워 온 것에 기초한다면, 이것은 이렇게 비유할 수 있겠습니다.

'여러 컨테이너 간의 연동'이요.

그리고 그걸 하기 위해 필요한 것이 '도커 네트워크'입니다.

 

 

8-2. 도커 네트워크 생성과 삭제

 

도커 네트워크를 생성하는 커맨드는 다음과 같습니다.

docker network create [OPTIONS] NETWORK

또, 도커 네트워크를 삭제하는 커맨드는 다음과 같습니다.

docker network rm NETWORK [NETWORK...]

https://docs.docker.com/engine/reference/commandline/network/

 

docker network

docker network: Manage networks. You can use subcommands to create, inspect, list, remove, prune, connect, and disconnect networks.

docs.docker.com

더 자세한 정보와 옵션은 위의 문서를 참고해주시고요.

 

 

8-3. 도커 네트워크를 이용한 컨테이너의 연동

 

이번에는 두 개의 컨테이너를 이용하여 연동하는 과정을 다루려고 합니다.

여기서는 워드프레스와 MySql을 가지고 실습해보도록 하겠습니다.

 

순서는 이렇습니다.

  1. 도커 네트워크 생성
  2. MySql 컨테이너 생성
  3. 워드프레스 컨테이너 생성

그럼 먼저 도커 네트워크부터 생성해보죠.

docker network create network_ex1

 

생성된 네트워크를 확인해봐야겠죠?

docker network ls

제대로 생성된 것을 볼 수 있네요.

 

그럼 이번에는 MySql 컨테이너를 생성해보겠습니다.

 

생성하기 전에 고려해야 될 것이 2개 있는데요.

  1. 방금 만든 네트워크에 포함시키는 것.
  2. MySql 고유의 옵션 확인.

우선, 컨테이너를 생성할 때 네트워크에 포함시키는 명령어는 '--net= 네트워크 이름'입니다.

기본적인 옵션에 대해서는 아래의 포스팅을 한번 더 참고 바랍니다.

https://thisisnew-storage.tistory.com/70

 

Docker - 컨테이너의 기본적인 사용법 (명령어)

4. 컨테이너의 기본적인 사용법 4-1. 기본적인 명령어의 구조 도커 데스크톱을 열면 첫 화면에서 아래와 같은 명령어를 볼 수 있습니다. docker run -d -p 80:80 docker/getting-started 도커에서 컨테이너를

thisisnew-storage.tistory.com

 

그리고 MySql 이미지의 고유 옵션은 아래의 문서에서 확인할 수 있습니다.

 

https://hub.docker.com/_/mysql

 

mysql - Official Image | Docker Hub

Quick reference Supported tags and respective Dockerfile links 8.0.31, 8.0, 8, latest, 8.0.31-oracle, 8.0-oracle, 8-oracle, oracle 8.0.31-debian, 8.0-debian, 8-debian, debian 5.7.40, 5.7, 5, 5.7.40-oracle, 5.7-oracle, 5-oracle 5.7.40-debian, 5.7-debian, 5-

hub.docker.com

 

 

이것들을 참고하여 만든 최종 커맨드는 다음과 같습니다.

docker run --name mysql_ex1 -dit --net=network_ex1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=mydb -e MYSQL_USER=admin -e MYSQL_PASSWORD=1234 mysql

 

 

제대로 생성되었는지 확인해 봐야죠.

docker ps

 

마찬가지 방법으로 워드프레스 컨테이너도 만들어 보겠습니다.

 

https://hub.docker.com/_/wordpress

 

wordpress - Official Image | Docker Hub

Quick reference Supported tags and respective Dockerfile links 6.1.0-apache, 6.1-apache, 6-apache, apache, 6.1.0, 6.1, 6, latest, 6.1.0-php7.4-apache, 6.1-php7.4-apache, 6-php7.4-apache, php7.4-apache, 6.1.0-php7.4, 6.1-php7.4, 6-php7.4, php7.4 6.1.0-fpm,

hub.docker.com

 

만들기 전에 워드프레스 이미지의 옵션 먼저 확인하고요.

 

최종적인 커맨드는 다음과 같습니다.

docker run --name wordpress_ex1 -dit --net=network_ex1 -p 8080:80 -e WORDPRESS_DB_HOST=mysql_ex1 -e WORDPRESS_DB_NAME=mydb -e WORDPRESS_DB_USER=admin -e WORDPRESS_DB_PASSWORD=1234 wordpress

 

잘 만들어졌는지 봐야겠죠?

docker ps

네. 잘 만들어졌네요. 그러면 8080 포트로 한번 접근해보도록 하죠.

브라우저에 http://localhost:8080/을 입력하여 접속을 해봅니다.

 

잘 되네요.

이로써 두 개의 컨테이너를 하나의 네트워크로 연결해봤습니다.

 

 

8-4. 마무리

 

실습이 끝났으니 컨테이너부터 네트워크, 이미지까지 종료하고 삭제하면 되겠습니다.

 

먼저 컨테이너를 확인하고요.

docker ps

그다음 컨테이너 종료.

docker stop wordpress_ex1 mysql_ex1

제대로 종료했는지 봐야겠죠?

docker ps -a

둘 다 Exited 상태네요. 제대로 종료되었습니다.

 

종료한 컨테이너는 삭제해줍니다.

docker rm wordpress_ex1 mysql_ex1

이번에도 제대로 삭제되었는지 확인해줍니다.

 

 

이번에는 이미지를 삭제하도록 하죠.

docker image ls

docker image rm mysql wordpress

 

이미지가 제대로 지워졌는지 확인해야죠.

네. 잘 지워졌네요.

 

 

마지막으로 네트워크도 삭제하도록 하겠습니다.

docker network rm network_ex1


이렇게 도커 네트워크를 해봤습니다.

반응형

관련글 더보기

댓글 영역