워드 프레스 구축
워드 프레스 : 웹 사이트를 만들기 위한 소프트웨어
- 서버에 설치해 사용
도커 네트워크 생성/삭제
- 워드프레스는 워드프레스 컨테이너와 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 |