4. 도커 - 여러 개의 컨테이너 연동해 보기

2025. 7. 31. 10:58·도커

워드 프레스 구축

워드 프레스 : 웹 사이트를 만들기 위한 소프트웨어

  • 서버에 설치해 사용

도커 네트워크 생성/삭제

  • 워드프레스는 워드프레스 컨테이너와 MySQL 컨테이너로 구성해 실습
  • 웹 사이트 작성자가 작성한 내용을 데이터베이스에 저장하고, 웹 사이트 열람자의 요청에 따라 웹 페이지를 보여준다.
    • 그렇기 때문에 이 데이터들을 저장할 MySQL이 필요하다.

컨테이너를 두 개 만들기만 해서는 두 컨테이너가 연결되지 않으므로 가상 네트워크를 만들고 이 네트워크에 두 개의 컨테이너를 소속시켜 두 컨테이너를 연결한다.

 

가상 네트워크를 만드는 커맨드

docker network create [네트워크 이름]

삭제

docker network rm [네트워크 이름]

목록 출력

docker network ls

 

주요 하위 커맨드

커맨드내용생략 가능 여부주요 옵션

connect 네트워크에 컨테이너를 새로 접속 X 거의 사용하지 않음
disconnect 네트워크에서 컨테이너의 접속을 끊음 X 거의 사용하지 않음
create 네트워크를 생성 X 거의 사용하지 않음
insepct 네트워크의 상세 정보를 확인 X 거의 사용하지 않음
ls 네트워크의 목록 확인 X 거의 사용하지 않음
prune 현재 아무 컨테이너도 접속하지 않은 네트워크를 모두 삭제 X 거의 사용하지 않음
rm 지정한 네트워크를 삭제 X 거의 사용하지 않음

**MySQL 컨테이너 실행 시에 필요한 옵션과 인자**

  • 실제로 사용할 수 있어야 하기 때문에 9가지 옵션과 3가지 인자를 지정한다
docker run --name 컨테이너_이름 -dit --net=네트워크_이름 -e MYSQL_ROOT_PASSWORD=MySQL_루트_패스워드 -e MYSQL_DATABASE=데이터베이스_이름 MYSQL_USER=MySQL_사용자이름 -e MYSQL_PASSWORD=MySQL_패스워드 mysql --character-set-server=문자_인코딩 --collation-server=정렬_순서 --default-authentication-plugin=인증_방식

 

옵션

항목옵션실습에서 사용하는 값

네트워크 이름 --net wordpress000net1
MySQL 컨테이너 이름 --name mysql1000ex11
실행 옵션 -dit 없음
MySQL 루트 패스워드 -e MYSQL_ROOT_PASSWORD myrootpass
MySQL 데이터베이스 이름 -e MYSQL_DATABASE wordpress000db
MySQL 사용자 이름 -e MYSQL_USER wordpress000kun
MySQL 패스워드 -e MYSQL_PASSWORD wkunpass

루트 : 모든 권한을 가진 사용자로, 이 권한이 없으면 할 수 없는 작업이 있지만 매번 루트 사용자로 접속할 경우 보안 측면에서 문제가 발생

따라서 제한된 권한을 가진 일반 사용자로 전환하는 것이 일반적

  • 실제 패스워드를 설정할 때는 무작위 문자열을 사용해야 한다.

사용된 인자

항목인자값의미

문자 인코딩 --character-set-server= utf8mb4 문자 인코딩으로 UTF8을 사용
정렬 순서 --collation-server= utf8mb4_unicode_ci 정렬 순서로 UTF8을 따름
인증 방식 --default-authentication-plugin= mysql_native_password 인증 방식을 예전 방식(native)으로 변경
  • 세 번째 인증 방식은 MySQL이 MySQL5에서 MySQL8로 넘어오면서 외부 소프트웨어가 MySQL에 접속하는 인증 방식을 바꾸었기 때문에
  • 이 새로운 인증 방식은 아직 지원하지 않는 소프트웨어가 많다. 따라서 문제가 없도록 예전 인증 방식으로 바꾸는 것

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

docker run --name 컨테이너_이름 -dit --net=네트워크_이름 -e WORDPRESS_DB_HOST=데이터베이스_컨테이너_이름 -e WORDPRESS_DB_NAME=데이터베이스_이름 WORDPRESS_DB_USER=데이터베이스_사용자_이름 -e WORDPRESS_DB_PASSWORD=데이터베이스_패스워드 wordpress

항목옵션설정값(임의의 이름 또는 지정된 값)

네트워크 이름 --net wordpress000net1
MySQL 컨테이너 이름 --name wordpress000ex12
실행 옵션 -dit 없음
포트 번호 설정 -p 8085:80
데이터베이스 컨테이너 이름 -e WORDPRESS_DB_HOST mysql1000ex11
데이터베이스 이름 -e WORDPRESS_DB_NAME wordpress000db
데이터베이스 사용자 이름 -e WORDPRESS_DB_USER wordpress000kun
데이터베이스 패스워드 -e WORDPRESS_DB_PASSWORD wkunpass

지금까지 설정한 정보는 MySQL 컨테이너의 설정값과 동일한 값이어야 한다. 값이 다르면 연동이 잘 되지 않으며 워드프레스도 사용할 수 없다.

  • 특별히 사용된 인자는 없음

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

먼저 네트워크 생성한다.

  • 아까 테이블에 저장해둔 이름 wordpress000net1으로 생성한다.

 

MySQL 컨테이너 생성 및 실행

 

워드프레스 컨테이너 생성 및 실행

 

명령어 직접 작성해보기

워드프레스를 사용하려면 워드프레스 프로그램 외에도 아파치와 PHP 런타임, MySQL이 필요했다.

워드프레스 외에도 이러한 형식으로 구성되는 웹 시스템이 많다.

특히 아파치, PHP, MySQL에 리눅스를 합친 조합을 LAMP 스택이라고 부른다.

소프트웨어가 발전하면서 아파치가 nginx로 바뀌기도 하고, MySQL이 MariaDB나 PostgreSQL로 바뀐 조합도 나타났지만

'리눅스 + 웹 서버 + 프로그래밍 언어 런타임 + 데이터베이스'의 조합임은 변함이 없다

따라서 컨테이너도 워드프레스와 마찬가지로 '프로그램 본체 + 프로그램 런타임+ 웹 서버' 컨테이너와 '데이터베이스' 컨테이너로 구성해 운영하는 사례를 흔히 볼 수 있다.

  • 공식 참조 문서 : https://docs.docker.com/reference

만약 명령어가 필요하다면 공식 참조 문서를 통해 명령어를 작성한다.

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

레드마인 : '티켓'(누구에게 어떤 업무를 맡길지를 나타내는 ToDO)을 관리하는 소프트웨어

레드마인과 워드프레스는 포트 번호 정도만 다르고 거의 같은 구성을 띄지만 옵션의 이름이 다르다

네트워크 생성

 

MySQL 컨테이너 생성 및 실행

 

레드마인 컨테이너 생성 및 실행

 

 

'도커' 카테고리의 다른 글

5. 도커 - 컨테이너와 호스트 간에 파일 복사하기  (3) 2025.08.11
3. 도커 커맨드 실습하기  (4) 2025.07.29
2. 도커 엔진  (3) 2025.07.28
1. 도커 개념 정리  (0) 2025.07.26
'도커' 카테고리의 다른 글
  • 5. 도커 - 컨테이너와 호스트 간에 파일 복사하기
  • 3. 도커 커맨드 실습하기
  • 2. 도커 엔진
  • 1. 도커 개념 정리
masxer
masxer
masxer 님의 블로그 입니다.
  • masxer
    masxer 님의 블로그
    masxer
  • 전체
    오늘
    어제
    • 분류 전체보기 (54)
      • 알고리즘 (7)
      • 코딩 테스트 준비 (34)
        • 문제 (28)
        • 개념 (6)
      • 25-1 여름방학 공모전 프로젝트 (0)
      • 스프링부트 (6)
      • 도커 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
masxer
4. 도커 - 여러 개의 컨테이너 연동해 보기
상단으로

티스토리툴바