도커/개념 및 실습

도커를 이용한 워드프레스 웹 서비스 구축

Jaden Park 2021. 6. 20. 23:32

들어가며

이미지설치

도커볼륨생성

mysql 컨테이너 생성

mysql 컨테이너 생성 및 확인

wordpress 컨테이너 생성

<kube-control1 ip 주소>:8080 들어가서 확인

끝마치며


들어가며

실습에 필요한 가상환경을 구축하기 위해 vagrant 설치docker 설치가 필요합니다.

위의 2개의 링크를 확인하여 설치하시고 다음 내용을 참고해주시길 바랍니다.

 

도커 명령어, 환경변수 등을 살펴보도록 하겠습니다.

 

 


 

이미지 설치

이 과정은 스킵해도 문제는 없습니다. 하지만, 오프라인에서 사용할 일이 있다면 이미지를 미리 설치해야 합니다.

 

mysql 은 현재 시점에 8버전이 최신버전이지만 많은 유저들은 안정성을 고려하여 5.7 버전을 다수 이용합니다.

워드프레스 역시 그와 비슷한 시점의 설치해줍니다.

vagrant@kube-control1:~$ docker pull mysql:5.7
vagrant@kube-control1:~$ docker pull wordpress:5.7

도커 볼륨 생성

 

vol 볼륨을 만들어줍니다.

 

도커 볼륨을 생성하는 이유는 아래와 같습니다.

다수의 실행 중인 컨테이너 사이에서 데이터를 공유하거나

컨테이너에서 호스트 구성을 분리하거나

컨테이너 데이터를 원격의 호스트 또는 클라우드 업체에 저장하고 싶거나

다른 호스트로 데이터를 백업하거나 복원하기 위해서 입니다.

 

volume 과 같이 데이터를 관리하는 기술로 bind Mount 는 초기 도커부터 사용했으나 호스트 의존성이 커서 주로 사용하지 않습니다.

 

//db
vagrant@kube-control1:~$ docker volume create vol


//wordpress
vagrant@kube-control1:~$ docker volume create vol1

 


mysql 컨테이너 생성

vagrant@kube-control1:~$ docker run -d --name mysql_db -e MYSQL_ROOT_PASSWORD=toor -e MYSQL_DATABASE=wpdb -e MYSQL_USER=wp -e MYSQL_PASSWORD=wppass -v vol:/var/lib/mysql mysql:5.7

73ff547924d25486ac5a093f4005298c15f9c2cb039e11e06fda12bc6cca1937

 

-d

백그라운드 실행을 위한 옵션입니다.

 

 

--name <컨테이너 이름>

위의 명령은 컨테이너 이름을 mysql_db 로 하였습니다.

/etc/hosts 파일에 정의됩니다.

 

 

-e

도커 컨테이너의 환경변수를 지정하는 옵션입니다. dockerfile의 ENV 설정도 덮어써지게 됩니다.

필요한 환경변수를 지정해줍니다.

 

 

-v

볼륨을 마운트합니다.

위에 설명해두었으니 생략하겠습니다.

 

 

컨테이너 생성을 확인합니다.

 


 

mysql 컨테이너 실행 및 확인

 

먼저 컨테이너에 진입을 합니다.

vagrant@kube-control1:~$ docker exec -it mysql_db bash

exec 명령은 컨테이너 외부에서 안으로 진입할 때 사용합니다.

 

-it

-i 옵션과 -t 옵션은 같이 쓰는 경우가 매우 많습니다.

두 옵션은 컨테이너가 실행되며 터미널의 입력을 계속해서 컨테이너로 전달하기 위해서 사용합니다.

특히 컨테이너의 쉘(SHELL)이나 CLI 도구를 사용할 때 매우 유용합니다.

 

 

root@73ff547924d2:/# mysql -u wp -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.34 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wpdb               |
+--------------------+
2 rows in set (0.00 sec)

mysql> exit
Bye
root@73ff547924d2:/# exit
exit
vagrant@kube-control1:~$ 

 


 

워드프레스 컨테이너 생성

vagrant@kube-control1:~$ docker run -d --name wp -p 8080:80 --link mysql_db:wpdb -e WORDPRESS_DB_HOST=wpdb -e WORDPRESS_DB_USER=wp -e WORDPRESS_DB_PASSWORD=wppass -e WORDPRESS_DB_NAME=wpdb -v vol1:/var/www/html wordpress:5.7

3fcedc15e32587b2cf57b392b81957231ae7b23a3edf2385607d7112c3327cdc

 

-d

백그라운드 실행을 위한 옵션입니다.

 

--name <컨테이너 이름>

위의 명령은 컨테이너 이름을 wp 로 하였습니다.

/etc/hosts 파일에 정의됩니다.

 

-p

호스트와 컨테이너 간의 포트포워딩을 해줍니다.

위에는 호스트 컴퓨터의 8080 포트를 컨테이너 내부 80 포트로 포워딩 해줍니다.

 

--link <컨테이너이름>:<별칭>

컨테이너끼리 서로 통신하려면 기본적으로 같은 bridge 드라이버 네트워크를 사용해야 합니다.

같은 네트워크라면 해당 명령을 통해 링크 기능을 사용할 수 있습니다.

컨테이너 이름을 가지고 통신할 수 있는 이유는 /etc/hosts 파일에 정의되어 있기 때문입니다.

별칭을 지정해줄 수 있습니다.

 

-e

도커 컨테이너의 환경변수를 지정하는 옵션입니다. dockerfile의 ENV 설정도 덮어써지게 됩니다.

필요한 환경변수를 지정해줍니다.

 

-v

볼륨을 마운트합니다.

위에 설명해두었으니 생략하겠습니다.

 

 


<kube-control1 ip 주소>:8080 들어가서 확인

 

control1 의 ip는 현재 192.168.200.11 로 되어 있습니다.

이전 포스트에서 그대로 생성했다면 192.168.100.11로 되어있을 겁니다. 각자의 ip 를 확인한 뒤 접속하시기 바랍니다.

192.168.200.11:8080 브라우저에 들어가서 확인을 해보겠습니다.

 

 

정상 작동하는 것을 확인할 수 있습니다.

 

 


 

끝마치며

이전 포스팅에서 다뤘던 부분을 함축적으로 실습해볼 수 있는 포스트 입니다.

큰 문제없이 따라올 수 있어야 kubernetes 에서 탈없이 이해할 수 있습니다.

'도커 > 개념 및 실습' 카테고리의 다른 글

07장, 프라이빗 이미지 저장소  (0) 2021.06.04
06장-2, Dockerfile  (0) 2021.06.04
06장-1, 이미지 제작 및 업로드  (0) 2021.06.03
05장-2, 컨테이너의 통신  (0) 2021.06.02
05장-1, 도커 네트워크 유형  (0) 2021.06.02