[Docker] 6. 여러 개의 컨테이너 연동

sorzzzzy·2022년 5월 4일
0

Docker&Kubernetes

목록 보기
6/12
post-thumbnail

🏷 워드프레스 구축

워드프레스는 웹 사이트를 만들기 위한 소프트웨어로, 이번 과정에서는 여러 개의 컨테이너를 다루는 연습 소재로서 워드프레스 사이트를 구축해보는 연습을 할 것이다.

도커 네트워크 생성/삭제

워드프레스는 워드프레스 컨테이너와 MySQL 컨테이너로 구성된다.
워드프레스는 간단히 말해 블로그 생성 도구와 같은 것으로, 웹 사이트 작성자가 작성한 내용을 데이터베이스에 저장하고, 웹 사이트 열람자의 요청에 따라 웹 페이지를 보여준다.

프로그램이 MySQL에 저장된 데이터를 읽고 쓸 수 있어야 하기 때문에 두 컨테이너가 연결돼있어야 한다.
가상 네트워크를 만들고, 이 네트워크에 두 개의 컨테이너를 소속시켜 두 컨테이너를 연결하는데 이 커맨드가 바로 docker network create 이다.

✔️ 도커 네트워크를 생성하는 커맨드

docker network create [네트워크 이름]


✔️ 도커 네트워크를 삭제하는 커맨드

docker network rm [네트워크 이름]


MySQL 컨테이너 실생 시 필요한 옵션과 인자

이번 실습에서 사용할 MySQL 컨테이너는 실제로 사용할 수 있어야 하기 때문에 옵션 아홉가지와 인자 세가지를 지정한다.

옵션을 먼저 살펴보자.
--name, -dit 옵션은 이미 사용해봤으니 넘어가고 나머지 다섯가지를 살펴보자. 나머지는 모두 -e 옵션으로 환경변수를 설정하기 위해 사용한다.

  • --net : 연동되는 네트워크 이름
  • -e MYSQL_ROOT_PASSWORD : MySQL 루트 패스워드
  • -e MYSQL_ROOT_PASSWORD : MySQL 컨테이너 이름
  • -e MYSQL_DATABASE : MySQL 데이터베이스 이름
  • -e MYSQL_USER : MySQL 사용자 이름
  • -e MYSQL_PASSWORD : MySQL 패스워드

루트 패스워드 & 사용자 패스워드
루트모든 권한을 가진 사용자로 이 권한이 없으면 할 수 없는 작업이 있지만,
매번 루트 사용자로 접속할 경우 보안 측면에서 문제가 생기기 때문에 제한된 권한을 가지는 일반 사용자로 전환하는 것이 일반적이다.

인자로는 세가지가 사용된다.

  • --character-set-server : 문자 인코딩
  • --collation-server : 정렬 순서
  • --default-authentication-plugin : 인증 방식

워드프레스 컨테이너 실행 시 필요한 옵션과 인자

워드프레스 컨테이너에도 옵션이 10가지가 사용된다.
하지만 대부분이 데이터베이스(이 실습에서는 MySQL)과 관련된 정보이다.
인자는 필요하지 않다.

--name, -dit, --net 옵션을 제외한 나머지 5가지 옵션을 알아보자.

  • -p : 포트 번호 설정
  • -e WORDPRESS_DB_HOST : 데이터베이스 컨테이너 이름
  • -e WORDPRESS_DB_NAME : 데이터베이스 이름
  • -e WORDPRESS_DB_USER : 데이터베이스 사용자 이름
  • -e WORDPRESS_DB_PASSWORD : 데이터베이스 컨테이너

🏷 워드프레스 및 MySQL 컨테이너 생성과 연동

워드프레스 컨테이너를 사용해 실제로 실행해보는 실습을 진행하겠다.

1. 네트워크 생성
2. MySQL 컨테이너 생성
3. 워드프레스 컨테이너 생성
4. 컨테이너 및 네트워크 확인

순서로 진행하겠다.

네트워크 생성

➡️ docker network create wordpress000net1
네트워크를 생성한다.
제대로 생성됐는지 확인하기 위해서는 ls 커맨드를 사용한다.


MySQL 컨테이너 생성

➡️ docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
아홉가지 옵션과 세가지 인자를 사용해 MySQL 컨테이너를 생성한다.

인자

  • --character-set-server=utf8mb4 : 문자 인코딩으로 UTF8을 사용
  • --collation-server=utf8mb4_unicode_ci : 정렬 순서로 UTF8을 따름
  • --default-authentication-plugin=mysql_native_password : 인증 방식을 예전 방식으로 변경

M1에서 실행하므로 여기에도 --platform linux/amd64 옵션을 추가로 작성해야 한다.


워드프레스 컨테이너 생성

➡️ docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress
10가지의 옵션을 이용해 워드프레스 컨테이너를 생성한다.


컨테이너 및 네트워크 확인

ps 커맨드를 실행해 MySQL, 워드프레스 두가지 컨테이너가 모두 실행중인지 확인한다.

웹 브라우저에서 http://localhost:8085 에 접근해 워드프레스의 초기 화면을 확인한다.


뒷정리

사용한 컨테이너를 종료 및 삭제한다.

이미지 또한 삭제한다.

ls 커맨드로 모두 잘 삭제됐는지 확인한다.


🏷 레드마인 및 MariaDB 컨테이너를 대상으로 연습하자

이번에는 워드프레스 외의 다른 소프트웨어를 사용해 실습을 진행하겠다.
티켓 관리 시스템인 레드마인 컨테이너를 만들어 볼 것이고 데이터베이스는 MariaDB를 사용하겠다.

레드마인 컨테이너와 이전에 만들어보았던 워드프레스 컨테이너는 포트 번호와 옵션 이름이 살짝 다른것을 제외하고는 거의 같은 구성을 띈다.

네트워크 생성

➡️ docker network create redmine000net3
네트워크를 생성한다.
제대로 생성됐는지 확인하기 위해서는 ls 커맨드를 사용한다.


MariaDB 컨테이너 생성

➡️ docker run --name mariadb000ex15 -dit --net=redmine000net3 -e MYSQL_ROOT_PASSWORD=mariarootpass -e MYSQL_DATABASE=redmine000db -e MYSQL_USER=redmine000kun -e MYSQL_PASSWORD=rkunpass mariadb --character-set-server=utf8mb4 --collationserver=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
아홉가지 옵션과 세가지 인자를 사용해 MariaDB 컨테이너를 생성한다.


레드마인 컨테이너 생성

➡️ docker run -dit --name redmine000ex16 --network redmine000net3 -p 8087:3000 -e REDMINE_DB_MYSQL=mariadb000ex15 -e REDMINE_DB_DATABASE=redmine000db -e REDMINE_DB_USERNAME=redmine000kun -e REDMINE_DB_PASSWORD=rkunpass redmine
7가지의 옵션을 이용해 레드마인 컨테이너를 생성한다.


컨테이너 및 네트워크 확인

ps 커맨드를 실행해 MariaDB, 레드마인 두가지 컨테이너가 모두 실행중인지 확인한다.
이미지와 네트워크 정보도 함께 확인한다.

웹 브라우저에서 http://localhost:8087 에 접근해 레드마인의 초기 화면을 확인한다.


뒷정리

사용한 컨테이너, 이미지, 네트워크를 모두 삭제한다.

ls 커맨드로 모두 잘 삭제됐는지 확인한다.

profile
Backend Developer

0개의 댓글