목차
1. sed 명령어
2. 스크립트 작성
- 설치 및 서비스 실행 스크립트
- 삭제 스크립트
3. 실행중인 컨테이너를 이미지 파일로 만들기
- Commit
- Save & Load
- Export & Import(CentOS, httpd)
4. PATH
sed 명령어
- sed는 데이터를 출력해주는 명령어이다
- i 옵션을 추가하게 되면 내용 수정이 가능해진다
- sed의 i옵션을 사용하여 index.html파일을 직접 들어가 수정할 필요없이 밖에서 수정이 가능
- 스크립트 짤 때 매우 유용하다
- vi편집기에서 s의 역할은 대체하는 명령어 / g는 문서 끝까지
- :%s /WEBSERVER-1/WEBSERVER-2/g와 동일하다
스크립트 작성
- 스크립트 : 명령어의 모음
설치 및 서비스 실행 스크립트
- Docker 설치를 위해 먼저 yum-utils를 설치해 yum-config-manger 사용가능 상태로 만듬
- yum-config-manager을 통해 docker repository를 받아옴
- Docker 관련 패키지 설치 진행
- 이미지 가져오기(httpd, nginx, alpine, centos7)
- 받아온 이미지 확인 후, 네트워크 드라이버 생성(N1, N2)
- cat의 입력전환을 통해 index.html, index1.html 내용 작성
- 웹서버 접속을 위해 80번 포트 개방
- 각각의 지정된 네트워크 카드에 맞춰 컨테이너 생성(h1, n1)
- 미리 만들어 놓은 index.html, index1.html을 각각의 컨테이너의 index.html에 밀어넣기
- 로드밸런싱을 위해 haproxy 설치
- sed 명령어를 통해 haproxy 구성파일 내용 수정
- haproxy 시작 후, curl을 통해 설정내용이 확인되는지 까지 확인
- diff 명령어를 통해 파일 내용의 다른점을 찾을 수 있다
- 실행권한 주게 되면 sh(강제 실행) 명령어 없이 실행가능
- 로드밸런싱이 이뤄지고 있는 것을 확인
삭제 스크립트
- HAProxy 삭제
- Docker에서 생성한 컨테이너 삭제
- Docker에서 생성한 bridge 네트워크 삭제
- index.html, index1.html 삭제
- Docker Hub에서 받아온 이미지 삭제
- Docker 패키지 삭제 및 yum-utils 삭제
- HAProxy 백업파일 삭제
- 방화벽 80번 포트개방 삭제
- Docker Repository 삭제
- 삭제되었는지 확인
실행중인 컨테이너를 이미지 파일로 만들기
- 컨테이너와 이미지 파일의 구분을 더 명확히 하자!
- 컨테이너는 이미지 파일이 실행된 것이다
- 엄연히 컨테이너와 이미지는 다른 것
Commit
- 가장 편하고 좋은 방법
- 초기 설정까지 전부 가져간다
- 테스트를 위해 h1이라는 컨테이너 미리 생성
- httpd 이미지파일 사용 및 8080포트 사용
- Dangle 이미지가 생성이 된다
Save & Load
- Save를 통해 이미지 파일들을 tar파일로 생성
- Load를 통해 이미지 파일 관리
- 테스트를 위해 alpine, centos7 이미지 삭제 먼저 진행
- tar xvfz를 사용하여 해제하면 이상한 파일들이 해제 후 생성이 된다
- 즉, load 명령어만 사용하여 해제가 가능하다
Import & Export - CentOS
- babo.txt 파일안에 HelloWorld라는 내용 입력 및 저장
- export한 tar파일을 사용하여 centos:c1 이미지 파일 생성
- import를 사용하게 되면, 유저파일은 존재하나 이미지의 초기 설정 파일이 초기화
되기 때문에 생성이 되지 않는 것을 확인
- import시에 초기화 된 설정 파일을 살려줘야 한다
- CMD : 이미지가 실행될 때 수행되어야 할 명령어를 입력하는 것
- 설정파일이 초기화되었기 때문에 수행되어야할 명령어를 입력해야 정상 작동
- 정상적으로 c3가 동작되는 것을 확인
Import & Export - HTTPD
- export는 컨테이너, import는 이미지를 가져오게 된다
- 8080포트로 httpd 이미지를 실행시켜 h1 컨테이너 생성
- CentOS와 동일하게 생성한 컨테이너를 tar파일로 생성 후, import 시켜 이미지를 생성
- 생성한 이미지 파일을 사용하여 h2 컨테이너 생성
- Command가 없다고 오류가 나오는 것을 확인
- 오류없이 생성은 되었으나 Host-PC에서 웹서버 접속이 되지 않는다
- 컨테이너 생성까지 가능해지나 컨테이너가 Exited 상태가 되어 마찬가지로 웹 서버 접속 불가
- 환경변수(Path 경로)가 필요하다
- httpd-foreground 커맨드가 어디서 실행해야할지 몰라 웹 서버 접속이 불가한 것이었다
- 정상적으로 동작하지 않는 컨테이너들의 세부정보에서 Path경로가 빠져있는 것을 볼 수 있다
- 정상적으로 동작하는 컨테이너들의 세부정보에서는 Path경로가 들어가져 있는 것을 확인
- docker run의 e 옵션을 통해 직접 Path 경로를 지정해주어 오류 해결
PATH
- 특정한 파일이 있는 위치를 나타내는 주소, 파일에 접근하기 위한 경로
- 스크립트 파일을 실행하려는데 스크립트 파일의 위치가 /test/test1.sh라 가정했을 때
sh test1.sh로 실행하려 하면 경로가 틀려 실행이 되지 않는다
- bash_profile에서 :/test를 추가하여 PATH 경로를 미리 지정해 놓는다
- test 디렉터리에 들어가지 않아도 test 디렉터리 안의 스크립트나 파일 등을 열 수 있게 된다
- source : 스크립트 파일을 수정한 후에 수정된 값을 바로 적용하기 위해 사용
- 윈도우 환경 변수에 cmd의 경로가 지정되어 해당 위치로 들어가지 않고도 cmd사용이 가능