도커 네트워크
이전 글에서 도커에는 네트워크라는 것도 있다고 했습니다. 이 네트워크를 사용해서, 간단히 글을 작성할 수 있는 웹사이트, 블로그 앱 등으로 유명한 워드프레스(wordpress)라는 무료 오픈소스 소프트웨어를 실행해보겠습니다.
Blog Tool, Publishing Platform, and CMS - WordPress.org 한국어
아름다운 웹사이트, 블로그, 또는 앱을 쉽게 만드는 데 사용할 수 있는 오픈 소스 소프트웨어
ko.wordpress.org
다시 서버에 접속합니다.
ssh root@[공인아이피주소]
접속 후 도커 네트워크를 생성하겠습니다. 이름은 wordpress000net1 으로 설정했습니다.
docker network create [네트워크이름]
이 네트워크 이름을 기억해두고, 이제 긴 명령어를 작성하겠습니다. 내용을 먼저 설명드리겠습니다.
- Root 비밀번호를 지정: myrootpassword
- 스키마 지정: wordpress000db
- 사용자(USER) 생성: wordpress000kun
- 사용자(USER) 비밀번호를 지정: wkunpassword
- 도커 허브 등에 기배포된 mysql 이미지를 내려받아 사용
- 유니코드 언어 설정: utf8
- 인증방식(default-authentication-plugin): mysql_native_password (기본 패스워드 방식) 설정
docker run --name mysql000ex1 \
--net=wordpress000net1 \
-e MYSQL_ROOT_PASSWORD=myrootpassword \
-e MYSQL_DATABASE=wordpress000db \
-e MYSQL_USER=wordpress000kun \
-e MYSQL_PASSWORD=wkunpassword \
mysql --character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--default-authentication-plugin=mysql_native_password
이제 MySQL Community Server가 실행되었으므로 다른 조작이 안됩니다. 터미널을 새로 열어서 다시 서버에 접속합니다.
새로운 터미널에서, 몇가지 옵션을 수행하겠습니다.
- 백그라운드에서 실행하고, it 옵션으로 키보드를 통해 컨테이너 내부 조작
- 네트워크 연결
- 포트는 8085로 80포트 접속합니다.
- 환경변수 4가지를 설정합니다. 워드프레스 DB관련 HOST, DB 이름, 사용자, 비밀번호를 설정합니다.
- WORDPRESS_DB_HOST=mysql000ex1
- WORDPRESS_DB_NAME=wordpress000db
- WORDPRESS_DB_USER=wordpress000kun
- WORDPRESS_DB_PASSWORD=wkunpassword
- 마지막으로, wordpress를 실행합니다.
적용하면 아래와 같이 명령어를 입력하면 됩니다.
docker run --name wordpress000ex1 -dit \
--net=wordpress000net1 -p 8085:80 \
-e WORDPRESS_DB_HOST=mysql000ex1 \
-e WORDPRESS_DB_NAME=wordpress000db \
-e WORDPRESS_DB_USER=wordpress000kun \
-e WORDPRESS_DB_PASSWORD=wkunpassword wordpress
이제 컨테이너 상태를 확인하면 아래와 같이 두개의 이미지(wordpress, myssql)이 실행되고 있음을 알 수 있습니다.
이제 8085포트로 접속해보겠습니다. 공인아이피:8085를 주소창에 입력합니다.
이렇게 설정하고, "워드프레스 설치"를 눌러줍니다. 이제 설치가 끝났습니다.
이제 로그인을 합니다. 앞서 설정한대로 입력합니다. 그러면 아래와 같은 화면으로 접근합니다.
관리자 페이지입니다. 글을 작성해봅니다.
글을 작성하려면 글 > 새로 추가를 누르고 글을 작성하고, 공개버튼을 누르면 됩니다.
위와 같이 제목과 내용이 잘 보여지는 것을 확인할 수 있습니다.
도커 내부 파일을 home으로 옮기기
추가로 도커 내부에 있는 파일을 home 디렉토리로 옮기는 방법을 정리했습니다. 먼저 apa000ex1이라는 이름으로 httpd 패키지를 설치합니다.
docker run --name apa000ex1 -d -p 8089:80 httpd
이미지를 바탕으로 만든 컨테이너를 실행시켜 도커 내부로 접속합니다. 실행시킬때는 /bin/bash 꼭 붙여주시고, exec 명령어와 -it 옵션을 통해 실행과 동시에 키보드로 내부를 조작할 수 있게 설정해줍니다.
docker container exec -it apa000ex1 /bin/bash
이제 도커 내부의 index.html이라는 파일을 외부에 있는 서버 home 디렉토리로 복사해보겠습니다. cp 명령어를 사용하면 됩니다.
docker cp apa000ex1:/usr/local/apache2/htdocs/index.html /home
해당 apache2 도커 내부에서 exit 명령어로 docker-test-server로 나옵니다. 서버 디렉토리에서, 위 명령어를 실행합니다. 그 다음 /home 디렉토리에서 내부 파일을 확인하면, index.html 파일이 있는 것을 알 수 있습니다.
이렇게 잘 복사된 것을 확인했습니다. 도커 컨테이너 이름:경로 파일로 잘 접근하면, 해당 내부에 있는 파일도 잘 끄집어낼 수 있습니다.
도커 볼륨(Volume)
마지막으로 볼륨에 대해 정리하고 마무리하겠습니다.
먼저 /home/root/test 라는 디렉토리를 만듭니다. mkdir 명령어로 만들어 주고, 해당 디렉토리로 이동합니다.
mkdir /home/root
mkdir /home/root/test
cd /home/root/test
이 디렉토리에서 볼륨을 생성해주고 그 내부 정보를 확인합니다.
# volume 생성
docker volume create volume000ex1
# volume 내부 정보 확인
docker volume inspect volume000ex1
이제 내부 정보를 보면 생성날짜, 마운트 포인트, 이름 등이 나타나있음을 알 수 있습니다.
볼륨을 활용한 컨테이너 생성 및 실행
추가로 이 볼륨값(volume000ex1)을 이용해서 apa000volumeex2라는 컨테이너를 생성하고 실행할 수 있습니다. 아래와 같이 코드를 작성해줍니다. 포트는 8090으로 설정해서 겹치지 않게 했습니다.
docker run --name apa000volumeex2 -d -p 8090:80 \
-v volume000ex1:/usr/local/apache2/htdocs httpd
위 코드에 더해서 apa000volumeex2로 접속할 수 있습니다. 접속이 잘 이루어지는 것으로 보아 잘 생성된 것이라 볼 수 있습니다.
볼륨을 삭제해보겠습니다. 삭제 명령어는 다음과 같습니다.
# docker volume 삭제
docker volume rm volume000ex1
그런데 그냥 삭제가 되지 않습니다. container를 중지시키고 삭제해야 합니다.
그러면 관련 컨테이너인 apa000volumeex2를 정지 후, 다시 삭제해보겠습니다.
먼저 정지시킨 후, 화면입니다.
컨테이너를 삭제하고, 그 다음에 볼륨 삭제를 진행합니다.
이렇게 볼륨 삭제까지 완료했습니다.
도커 네트워크를 통해 wordpress 소프트웨어도 실행해보고, 볼륨을 통해 도커 컨테이너 내부 파일에 접근하고 편하게 새롭게 컨테이너를 생성할 수 있음을 배웠습니다.
'네이버 클라우드 캠프 > Spring Boot & React' 카테고리의 다른 글
[Jenkins] 젠킨스 설정하기(2) (0) | 2023.08.10 |
---|---|
[Jenkins] 젠킨스 설정하기(1) (0) | 2023.08.09 |
[Docker] 도커로 앱 배포하기 (1) with Ncloud (0) | 2023.08.09 |
[Docker] 도커 시작하기 (0) | 2023.08.09 |
[SpringBoot & React] 회원가입과 로그인(2) (0) | 2023.07.31 |