Docker

22.06.01

가로선 2022. 6. 1. 15:22

 

   목차   

 

1. 컨테이너 이름 변경

2. Link

 - Link 정리

 - Link 사용

 - Link 사용 시 별칭 부여

 - Link 사용 시 IP 추적 확인

 - Link 스크립트 작성

3. MYSQL

 - 설치 방법

 - 문제 풀이


 

   컨테이너 이름 변경   

 - 이미지의 이름 변경은 tag

 - 컨테이너의 이름 변경은 rename

 

rename을 사용하여 컨테이너 이름 변경 가능

 

 

   Link   

 

   Link 정리   

 - 컨테이너간 통신시 IP로만 통신할 수도 있다

    - Docker의 DHCP로부터 앞쪽 부터 순차적으로 할당받지만 그렇지 않은 경우도 생길 수 있다

        - 이럴 때 Link 옵션을 사용

    - add-hosts를 통해 /etc/hosts 파일에 넣는 것과 동일하다고 생각

        - 실행중인 컨테이너에 ip와 매핑하여 /etc/hosts에 등록

 

   Link 사용   

 

테스트를 위해 c1, c2 컨테이너 생성

 

핑 테스트

    - c2에서는 c1의 IP만 알지 c1은 뭔지 모르기 때문에 핑이 나가지 않는 것을 확인

 

link 옵션을 사용하여 c3의 /etc/hosts에 c1, c2 등록

 

c3 컨테이너 내부의 /etc/hosts에 c1, c2가 등록이 된 것을 확인

 

c3에서 c1, c2의 IP가 아닌 도메인으로 핑이 가는 것을 확인

 

반대로는 핑 테스트 X

 

   Link 사용 시 별칭 부여   

 

링크 옵션에 컨테이너 이름을 추가 할때 뒤에 :를 사용하여 별칭 부여가 가능하다

 

c4의 컨테이너 내부의 /etc/hosts에 c1, c2, c3 별칭까지 등록된 것을 확인

 

c4 컨테이너에서 등록된 별칭들로 핑 테스트 확인

 

   Link 사용 시 IP 추적 확인   

 

c1 컨테이너의 이름을 cc1로 변경하여 c4에서 핑 테스트 진행

    - link 옵션을 사용하여 추가한 컨테이너들의 IP가 바뀌어도 계속 추적을 하지만

      이름이 바뀌게 되면 추적이 되지 않는 것을 확인

 

c2 컨테이너를 삭제하는 방식으로 IP자원을 바꿨으나 오류 발생

    - c2 컨테이너를 삭제 후, 새로운 컨테이너를 생성하여 c2의 자원을 받고 다시 c2를 생성하여

      다른 자원을 받게하였으나 오류가 발생하여 다른 방식으로 테스트 진행

    - 자원을 빼기 가장 좋은 방법은 stop이다

 

c2 컨테이너에서 c1 컨테이너의 ip를 추적하여 통신이 되는 것을 확인

    - c1, c2를 다시 생성하여 c1을 stop 후, c3를 생성하여 c1의 IP자원을 바꾸어 진행

 

   Link 스크립트 작성   

 - c2 컨테이너 생성 시 c1을 link 옵션 사용하여 추가

 - c1 컨테이너의 IP 자원을 다시 받아도 IP 추적하여 통신이 되는지 확인하는 스크립트 작성

 

작성한 스크립트

    - ping test 시 w로 deadline을 주어도 되나 c로 count를 주어도 된다

 

c1이 IP 자원을 다시 받아도 c2에서 핑 테스트가 되는 것을 확인

 

 

   MYSQL   

 

   설치 및 삭제 방법   

 

mysql 5.7 버전 이미지를 가져온다

 

docker hub에 나와있는대로 설치 진행

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

 

컨테이너 외부에서 mysql-community-client 설치 후, 접속 확인

    - mysql57 repository를 받아와 mysql-community-client 설치 진행

 

/etc/yum.repos.d 에서 mysql 관련 리포지토리 삭제해도 남아있는 파일 확인

 

패키지가 아직 남아있는 것을 확인 후 삭제

    - rpm의 e 옵션을 사용하여 해당 패키지 삭제 진행

    - 에러 없이 다시 리포지토리를 받아오는 것을 확인

 

   문제풀이   

 - 컨테이너를 사용한 DB 문제풀이

    - 전에 배웠던 DB 문제에서 컨테이너만 추가되었다고 생각

 

php파일을 사용하기 위해 http, php가 같이 있는 이미지를 가져온다

    - docker search를 통해 이미지 확인 후 pull 진행

 

가져온 이미지를 사용해 8080 포트의 p1 컨테이너 생성

 

scp를 통해 외부에 있는 php 파일을 복사

 

index.php 파일 수정

    - DB서버의 위치에 맞게 IP수정

 

수정한 php파일을 컨테이너로 복사

 

DB 접속

 

TEST를 위해 test DB 생성

 

person1.php 수정

    - insert1.php, table.php가 있는 위치의 IP로 설정해야 한다

    - 상대방 PC에서도 접속하고 싶다면 VMware Port Forwarding 후, 192.168 ~ 로 바꾸면 된다

    - UTF-8로 수정했는데 출력은 잘 나오는데 여긴 왜이러는지 모르겠네요..

 

VMware Port Forwarding

 

insert1.php 수정

 

table1.php 수정

 

수정한 php 파일들을 컨테이너 내부의 /var/www/html로 cp

 

member DB 생성 후, member table까지 형성

    - table1.php를 확인하여 필요한 정보들을 넣어 table 형성

 

방화벽 포트 개방

 

Host IP:8080/person1.php로 접속

    - 접속하여 정보 입력 후 회원가입 진행

 

Host IP:8080/table1.php에서 확인 가능

 

해당 member DB에도 정보가 저장된 것을 확인

 

상대방 PC에서도 접속하여 회원가입 후, 내용 저장되어 출력되는 것을 확인

'Docker' 카테고리의 다른 글

22.06.03  (0) 2022.06.03
22.06.02  (0) 2022.06.02
22.05.31  (0) 2022.05.31
22.05.30  (0) 2022.05.30
22.05.27  (0) 2022.05.27