갬미의 성장일기

Day 34 - 도커 실습 본문

Cloud/Cloud 공부일기

Day 34 - 도커 실습

갬미 2022. 2. 24. 18:32

오늘 배운 내용

- 리눅스 

- 마운트

 

리눅스 PATH

왜 ls는 그냥 실행이 되는데 shell파일은 ./test.sh라고 실행해야할까? (path)

echo $PATH -> 이때 나오는 경로에 위치한 명령어들은 이미 path가 잡혀있으니 그냥 명령어만 입력해도 된다는 뜻

ls -> path에 있는 명령어 -> 경로 생략하고 명령어만 입력해도 실행 가능

 

원하는 위치를 path에 추가하여 쉽게 실행할 수도 있다

 

1. 현재 쉘에서만 적용 (1회성)

export PATH=/work/job/:$PATH

path에 내가 정한 경로가 들어가고 경로 지정없이 test.sh 실행이 가능하다

export로 경로 추가시 다른 쉘을 열었을때 적용이 안된다 

 

2. 모든 쉘에서 적용 (실행할 때 마다)

root -> .bashrc파일을 수정

cd 
vi .bashrc

맨 마지막에 원하는 path 추가

재실행할때 적용되므로 새로운 쉘 열어서 확인

 

이런식으로 실행 모음 shell 파일을 모아놓은 디렉토리를 만들고 PATH에 추가하여 쉽게 실행하는 것도 좋은 방법이다

 

👇 참고 링크 

 

리눅스 쉘에 환경변수 경로 추가하기

리눅스 쉘에 환경변수 경로를 추가해보자! 가끔씩, 리눅스에서 실행파일을 쉽게 실행시키고 싶을 때가 있다. 우분투 소프트웨어에서 인식하는 소프트웨어의 경우 window키를 누르고 입력해서 실

koreanfoodie.me

 

윈도우도 마찬가지로 PATH 설정을 통해 tcping 이 있는 위치로 찾아가지 않고 원하는 위치에서 tcping을 실행할수있다

윈도우 시스템 환경변수편집 클릭

 

** TCPING?

nginx가 안된다고 연락이 왔다

-> 포트가 열려있는지 확인하는 방법

-> 포트는 데몬이 연다 (nginx -> 80번 / VM -> 22번)

 

1. nginx가 올라간 서버에 들어가서 확인한다 (netstat -na)

2. tcping 이용

 

- tcping 다운로드

https://www.elifulkerson.com/projects/tcping.php

 

tcping.exe - ping over a tcp connection

tcping.exe - ping over a tcp connection tcping.exe is a console application that operates similarly to 'ping', however it works over a tcp port. There are many different implementions of this floating around, written independently by different people. Ther

www.elifulkerson.com

tcping 이 있는 곳에 가서 터미널 창 열고 입력

vm에서 nginx 실행하고 tcping , 껐을때 tcping 비교

tcping 192.168.56.101

22번 포트 확인

tcping 192.186.56.101 22

ssh는 열려있음

 

이런식으로 port가 열려있는지 확인할 수 있는 것 = tcping

 


도커 외부 스토리지에서 마운트 하기

도커 컨테이너로 만든 웹서버의 access log를 계속 기록하고 있었다고 가정했을때 

만약 오류등으로 인해 컨테이너가 삭제되었다가 다시 작동된다면 log가 다 날아가버리고만다

따라서 컨테이너의 스토리지에 외부 볼륨을 마운트하여 log와 같은 기록이 날아가지 않도록한다

mkdir /data # log가 저장될 외부 스토리지
docker run -d -p 80:80 --name mynginx -v /data:/var/log/nginx gymin97/msa:v3

-v 옵션 : volume 옵션 

외부 스토리지:컨테이너 스토리지

tail -f /var/log/nginx/access.log # 컨테이너 shell로 접속해서 체크할 때
tail -f /data/access.log # host에서 체크할 때

컨테이너를 지우고 다시 만들어 같은 폴더를 마운트 한다면 -> 남아있던 log가 컨테이너에 적용이 된다

 

과제 : 컨테이너에 로그기록도 외부에 남기고

index.html 파일도 컨테이너를 재시작 하지않고 외부에서 변경이 가능하도록 해보세요

docker run -d -p 80:80 -v /data:/var/log/nginx -v /work/docker:/usr/share/nginx/html --name mynginx gymin97/msa:v3

-v를 두번 주면 된다

마운트를 위한 경로를 만들어서 하는것도 좋다

docker run -d -p 80:80 -v /data:/var/log/nginx/ -v /html:/usr/share/nginx/html/ --name mynginx gymin97/msa:v3

host에서 html을 수정하면 바로 웹에 반영이 된다

 

해설

※선행작업

  1. host에 마운트를 위한 디렉토리를 만든다. 
  2. 새로 만든 디렉토리에 index.html 파일을 생성한다. 
  3. -v 옵션을 준 컨테이너를 만든다. 
docker run -d -p 80:80 --name mynginx \
-v /data:/var/log/nginx \
-v /web:/usr/share/nginx/html \
gymin7/msa-nginx:v3

추가 설명 

-v /html:/usr/share/nginx/html ⇒ /html은 host의 디렉토리

/usr/share/nginx/html 컨테이너의 마운트 포인트

 

(maybe,, 이지만) 포털사이트 기념일 마다 바뀌는것도 이와 같이 하지 않을까 

호스트에서 컨테이너로 연결하려는 디렉토리가 컨테이너에 없으면 디렉토리를 자동으로 생성하고 연결시키나요?

--> ㅇㅇ 없는  경로가 마운트 포인트가 된다면 생성하고 host의 파일을 그 경로와 연결함

마운트를 통해, 컨테이너에 있는 로그 파일을 호스트VM에서 바로가기로 보는 걸로 이해하면 될까요?

--> 오히려 이 반대로 컨테이너가 host를 리으해서 보는것 , 실제 데이터가 있는곳은 host 

 

실제 데이터는 host에 저장이 되어있다 컨테이너가 생기면 연결된 곳의 log, html,, 등은 host에 링크 되어 있는것이다

 

추가 참고링크 

https://ndb796.tistory.com/96?category=1009977 

 

예제를 통해 도커파일(Dockerfile) 명령어 알아보기

예제를 통해 도커파일(Dockerfile) 명령어 알아보기 나동빈 지난 시간에는 간단한 형태의 도커파일(Dockerfile)을 작성하여 직접 도커 이미지(Docker Image) 파일을 생성하는 방법을 알아보았습니다. 이번

ndb796.tistory.com

 

오늘의 회고

  • 강사님이 매번 상황을 예시로 들어서 이럴땐 ~방법으로 해결하면 된다고 알려주시는데 기억에도 잘 남고 실무에서 많이 쓰이는 기술위주라 좋은것 같다
  • 마운트라는것을 배웠는데 이해가 가다가도 안가기도하고 ? 반정도는 이해한것 같다
  • 내일은 강사님께서 네트워크 특강을 해주신다고했다 >< 기대됨
  • 과제 할때 처음에는 파일을 마운트 해서 안됐는데 폴더를 마운트 하니까 잘 되었다 스스로 해봄으로써 또 하나를 배운것 같다 스스로 과제를 풀어보니까 뿌듯하고 재미있고 그런다~
Comments