상세 컨텐츠

본문 제목

[Docker] Link | MySQL | MySQL + php + httpd 실습

IT/Docker

by o_zeew 2022. 6. 4. 10:14

본문

(1) Docker Link

(2) MySQL

(3) MySQL + php + httpd 실습


  * 이전의 실습 파일들이 남아있다면 삭제 후 진행 *

 


 

 1. Docker Link 

  - 컨테이너 끼리는 IP를 이용하여 통신

  - 컨테이너 재시작 시 IP가 변경되는 경우 발생

  - Link를 사용할 시 IP 이외에 컨테이너 이름으로 통신 가능 → IP가 변경되어도 통신 가능

 

1. c1 컨테이너 생성

c1 컨테이너 IP : 172.17.0.2

 

2. Link 옵션을 사용해 c2, c3 컨테이너 생성

c1을 link 설정
c1과 c2를 link 설정

 

3. 컨테이너 명을 사용하여 ping test

c2에서 c1으로 컨테이너명을 사용해 ping 가능
c3에서 c1과 c2에게 컨테이너 명을 사용해 ping 가능

 

  - 그러나 c1은 c3를 link 적용 하지 않았기 때문에 c1에서 컨테이너명으로 통신 불가능

 

4. 별칭으로 통신

  - c4 생성 시 c1, c2, c3를 link 설정하면서 별칭 부여

c4에서 별칭으로 c1, c2, c3 통신 가능

 

5. 컨테이너 이름 변경 후 통신

c1의 컨테이너명을 c11로 변경
이름 변경 후 통신 불가

 

6. IP 변경 후 통신

  * 위에서 실습 한 컨테이너 모두 삭제 후 진행 *

 

  - c1, c2 컨테이너 생성

 

  - c1 컨테이너 정지

 

  - 컨테이너를 정지 시키면 IP를 반납하게 된다

 

  - c3 컨테이너 생성

 

  - c1이 반납한 IP를 받게된다

 

  - c1 컨테이너 재시작

 

  - 재시작 되면서 원래 사용했던 172.17.0.2를 c3가 배정받았기 때문에 다른 IP를 받게 됨

  - ping test

IP가 변경되어도 컨테이너명으로 통신 가능

 

 <Script 작성> 

  - 위에서 진행한 실습을 스크립트로 작성해보기

 

  - c1 컨테이너 생성

  - c2 컨테이너 생성

  - c2 컨테이너에서 c1 컨테이너로 ping 3번 전송

  - c1 컨테이너 정지

  - c3 컨테이너 생성

  - c1 컨테이너 재시작

  - c2 컨테이너에서 c1 컨테이너로 ping 3번 전송

-c : count 로 ping 전송 횟수 설정 가능

 

  - 스크립트 실행

 

 

 


 

 2. MySQL 사용 

1. MySQL 설치

설치 확인

 

2. 컨테이너 생성

  - MySQL 사용 방법

 

  - [-e] 옵션을 통해 환경변수 설정

m1 컨테이너 생성, 환경변수를 통해 mysql root 패스워드 입력
컨테이너 외부에서 ping test

 

3. MySQL Client 설치

레포지토리 설치

 

  - MySQL 5.7 버전 설치를 위해 gpgcheck 수정

5.7 버전 부분의 gpgcheck=0으로 수정
mysql client 설치

 

  - m1의 IP확인

docker inspect 명령어로 자세한 정보 확인
m1 IP 172.17.0.2

 

4. MySQL 로그인

172.17.0.2 로그인
database 확인

 

 

 


 

 

 3. MySQL + php + httpd 실습 

  - sysbee/ttp-php73 : php와 httpd를 같이 사용

 

1. 이미지 다운

docker pull 명령어를 사용하여 sysbee/http-php73 다운
다운로드 확인

 

2. 컨테이너 생성

p1컨테이너는 8080포트 열기

 

3. 접속 확인

8080포트가 열린 것을 확인 가능

 

4. php 파일 가져오기

php 파일을 넣을 디렉토리 생성

 

* 한글이 깨지지 않으려면 php파일의 포맷이 UTF-8로 설정되어있어야함*

Host PC에 있는 php파일들
index.php
0.00MB
insert1.php
0.00MB
person1.php
0.00MB
table1.php
0.00MB

 

  - scp 명령어를 사용해 php 파일 복사

php 파일을 생성한 /web 디렉토리에 복사

 

  - 확인

/web 디렉토리에 php 파일들 복사 확인

 

5. index.php 파일 수정

  * hostname에 hostname을 써주는 것을 권장

hostname = DB Server IP

 

  - 수정한 index.php 파일을 p1 컨테이너로 복사

 

  - p1 컨테이너 진입 후 httpd.conf 파일의 확장자를 php로 변경

index.html&nbsp;&rarr; index.php

 

  - test database 생성

db 연결을 위해 test database 필요

 

  - 연결 확인

연결 성공

 

6. insert1.php 파일 수정

   * DB에 데이터를 밀어넣는 역할 *

hostname = DB Server IP, member database 필요

 

7. table1.php 파일 수정

   * DB에 있는 데이터를 가져와서 출력하는 역할 *

hostname = DB Server IP, member dadtabase 필요

 

8. person1.php 파일 수정

   * 데이터를 입력 받는 역할 *

외부에서 들어올 수 있도록 포트포워딩 한 포트 입력 (8080)

 

9. php 파일들을 p1으로 복사

php 파일들을 p1 컨테이너의 /var/www/html/로 복사

 

10. DB 생성

172.17.0.2 로그인
member database 생성

 

  - table1.php 파일에서 요구하는 정보로 table 생성

member table 생성

 

11. 권한 부여

root 사용자에게 모든 DB와 모든 table에 대한 권한 부여 (보안상 권장 X)

 

12. 방화벽 열기

mysql의 3306번 포트 열기

 

13. 확인

10.0.0.31:8080/person1.php 회원가입 페이지 접속 가능
회원가입 진행
테이블 조회로 이동
10.0.0.31:8080/table1.php 테이블 조회 가능

'IT > Docker' 카테고리의 다른 글

[Docker] Dockerfile 명령어&생성  (0) 2022.06.06
[Docker] MySQL DB + wordpress 연동  (0) 2022.06.04
[Docker] Script 작성 | Image 생성  (0) 2022.06.03
[Docker] Docker & HAproxy | 팀별 실습  (0) 2022.06.03
[Docker] Virtual Box  (0) 2022.06.02

관련글 더보기