22.05.27
목차
1. cat 입력전환
2. Docker Container LifeCycle
3. 외부에서 컨테이너 내부에 밀어넣기
4. /etc/hosts 설정
- 컨테이너 외부에서 설정
- 컨테이너 내부에서 설정
- 컨테이너 외부에서 내부설정
5. Docker Network Driver
- 네트워크 카드 생성 및 변경
6. Docker가 방화벽 포트개방 없이 외부접속에서 되는 이유
7. 문제풀이
cat 입력전환
- test1.txt 파일을 생성해서 입력을 받는데 END라는 문자열이 입력될 때까지
기다렸다가 END라는 문자열이 입력이 되면 대기되었던 내용을 한꺼번에 출력
- ctrl+d와 동일한 기능을 함
- 스크립트 작성시에 필요(스크립트를 짤 때 ctrl+d를 표현할 방법이 x)
- 실무에서는 END 보다는 EOF(End Of File)을 많이 사용
Docker Container LifeCycle
- Signal
- kill : 작업중이던 것도 무조건 삭제
- stop : 정상 종료 / 작업중인 것은 정상적으로 마무리
- pause : 하던 작업도 멈춤
- 원래는 run으로 시작 및 실행을 동시에 하였지만, create다음 start의 순서가 FM
- stop을 사용하면 컨테이너가 가진 정보를 반납한다
- pause는 반납 x
- stop으로 일단 실행중인 컨테이너를 멈춘 후. rm으로 삭제
외부에서 컨테이너 내부에 밀어넣기
- 테스트를 위해 index_a.html, index_n.html 생성
- 각각에 a(httpd), n(nginx) 메인 페이지 출력값 변경내용 작성
- index_a.html의 내용을 h1 컨테이너의 지정한 위치로 밀어넣겠다
- /usr/local/apache2/htdocs/index.html : WEB 서버 메인페이지 출력값
- /usr/share/nginx/html/index.html : NGINX 메인페이지 출력값
/etc/hosts 설정
- /etc/hosts에 도메인을 등록하게 되면 DNS보다 먼저 IP를 읽어올 수 있다
- 아이피 도메인 Alias 순으로 작성
- 도메인, Alias 생략 가능
컨테이너 외부에서 설정
- Docker1, Docker2의 핑 테스트를 IP가 아닌 호스트 이름으로 하기 위함
컨테이너 내부에서 설정
- docker exec a1 cat /etc/hosts로 외부에서 확인 가능
- alpine에는 ping 명령어가 존재한다
컨테이너 외부에서 내부설정
- 컨테이너 내부의 /etc/hosts에 밀어넣을 파일 생성
- 외부에서 내부 컨테이너에 밀어넣는 방법 2가지 전부 제대로 작동 x
Docker Network Driver
- bridge : 하나의 Host-PC내에서 여러 컨테이너들이 서로 소통할 수 있도록 해준다
- host : 컨테이너를 Host-PC와 동일한 네트워크에서 컨테이너를 돌리기 위해 사용
- null : 네트워크 드라이버 할당 x
- 컨테이너를 생성하면 가상의 브릿지가 생성 컨테이너에 존재하는 실제 카드와
브릿지의 포트와 연결 되어 외부와의 통신이 되도록 설정
- 브릿지를 이용하여 컨테이너끼리도 통신이 가능해짐
네트워크 카드 생성 및 변경
- 네트워크 대역과 게이트웨이 설정 필수
- babo라는 이름의 네트워크 카드(Bridge)가 생긴 것을 확인
- net 옵션을 사용하여 네트워크 카드 변경 가능
Docker가 방화벽 포트개방 없이 외부접속에서 되는 이유
- Network Driver가 host인 경우에는 firewall-cmd public 존으로 처리가 됩니다.
- 생성한 컨테이너들은 Network Driver가 자동적으로 Host가 된다
- 따로 개방할 필요없이 자동적으로 개방이 되서 수동으로 설정할 필요가 x
문제 풀이
- alpine으로 이름이 a5인 컨테이너를 생성 후,
컨테이너 내부의 /etc/hosts를 수정해서 컨테이너 외부에서
a1 컨테이너 이름으로 ping test를 수행하는 스크립트 작성
- 생성한 각각의 컨테이너 정보들을 /etc/hosts에 입력이 된 a5 컨테이너 생성
- cat으로 a5의 /etc/hosts 정보 확인
- 각각의 컨테이너로 핑 테스트시 w 옵션으로 카운트 제어
- 제어하지 않으면 계속 a1의 핑 테스트만 진행하게 된다