개발/Docker

Docker - 프로세스 동작 과정 (cat, cp, signal, /etc/hosts, exec, attach)

잇(IT) 2022. 5. 27. 14:28
728x90

목차

1. Doker 프로세스 동작 과정

2. Docker  설정

2.1 cat, >, <, <<
2.2 Docker cp
2.3 Signal
2.4 /etc/hosts
2.5 exec
2.6 attach


1. Doker 프로세스 동작 과정

 


2. Docker  설정

 

- nginx 이미지 다운 후 실행시켜 컨테이너를 생성한다.

 

- 웹 페이지에 띄울 화면의 내용을 작성한다.

 

- httpd 이미지를 이용하여 h1의 이름을 가진 컨테이너를 생성한다.


2.1 cat, >, <, <<

 

- h1 컨테이너의 경우 bash shell이 따로 없기 때문에 exec 명령어를 이용하여 실행중인 컨테이너에 명령어를 실행한다.

 

* cat 리디렉션

- > : 표준 출력을 우측으로 바꾸겠다.

- << : 표준 입력을 바꾸겠다. ( << END를 실행 명령어 끝에 작성하면 END를 만나게 되면 저장하고 종료하게 된다.)

 

* >, < 사용

- 텍스트 파일을 하나 생성하여 내용을 작성한다.

 

- cat 명령어와 함께 > 를 사용하여 표준 출력을 test.txt 파일로 바꾸고 해당 파일에 < 를 이용하여 표준 입력을 위에서 생성한 파일을 작성하여 내용을 집어 넣는다.


2.2 Docker cp

 

- dockr cp를 사용하면 local -> container / container -> local로 파일을 옮길 수 있다.

- 단 도커 컨테이너의 경로를 지정할 때는 절대 경로를 적어줘야 한다.

 

- 로컬에서 생성한 파일을 docker cp 명령어

 

Local -> container 파일 복사

- docker cp를 이용하여 로컬에 있는 파일을 h1 컨테이너로 옮길 수 있다.

 

container -> local 파일 복사

- docker cp를 이용하여 h1 컨테이너에 있는 파일을 로컬로 옮길 수 있다.

 

local -> container -> local 파일 복사

- local에서 container로 다시 container에서 local로 새로운 이름의 파일을 생성하였을 때 cp를 이용하여 파일을 복사했기 때문에 내용이 동일한 것을 볼 수 있다.

 

local에서 작성한 html 파일을 container에 복사 한 뒤 띄운 웹 페이지

- 실행된 컨테이너의 웹 페이지에 들어가보면 cp로 복사한 내용이 나오는 것을 볼 수 있다.

 

마찬가지로 local에서 작성한 html 파일을 container에 복사 한 뒤 띄운 nginx 웹 페이지


2.3 Signal

 

- Signal이란. 프로세스 간 통신의 한 형태를 뜻한다.

 

* kill : 작업중이던 것도 무조건 삭제한다.

* stop : 정상 종료, 작업하는 내용은 정상적으로 마무리한다.

* pause : 하던 작업도 멈춘다.

 

2개의 컨테이너가 생성되어 있다.

- 현재 2개의 컨테이너 실행중이기 때문에 네트워크 카드가 2개 생성되어 있는 것을 볼 수 있다.

 

컨테이너 stop 후 삭제
11번 네트워크 카드가 사라졌다.

- 네트워크 카드 11번에 해당하는 Container를 stop으로 정상 종료 시킨 다음 rm 명령어로 삭제하게 되면 컨테이너가 정상적으로 종료되었기 때문에 11번 네트워크 카드가 사라진 것을 볼 수 있다.


2.4 /etc/hosts

 

- /etc/hosts 파일은 호스트 이름에 대응하는 IP 주소가 저장되어 있어서 도메인 이름 시스템(DNS)에서 주소 정보를 제공 받지 않고도 서버의 위치를 찾게 해주는 파일이다.

 

/etc/hosts 파일에 2개의 IP 주소를 추가한다.
/etc/hosts 파일에 추가했기 때문에 IP가 아닌 별칭으로도 통신이 가능하다.
/etc/hosts 파일에 추가했기 때문에 IP가 아닌 별칭으로도 통신이 가능하다.

- /etc/hosts 파일에 IP 주소와 해당 별칭을 저장하게 되면 DNS에 별도로 저장하지 않아도 별칭을 이용하여 상대방과 통신 할 수 있다.


2.5 exec

 

- exec 명령어는 외부에서 컨테이너에 진입할 때 사용한다.

 

exec를 통해 컨테이너 내부에서 ping을 보낼 수 있다.

- exec 명령어를 이용하여 외부에서 a1 컨테이너에 진입하여 ping 명령어를 실행 시킨다.


2.6 attach

 

- attach 명령어는 Container 실행시 사용한다.

 

alpine 이미지를 컨테이너로 접속 후&nbsp; attach로 컨테이너에 연결
/etc/hosts 파일을 통해 a1 컨테이너 IP 주소와 ID 확인
insepct 명령어를 통해 실제 a1 컨테이너의 ID 주소값과 비교

- alpine 이미지를 통해 컨테이너 생성 후 /etc/hosts 파일과 inspect 명령어를 통해 컨테이너 ID가 동일한 것을 확인할 수 있다.

 

* /etc/hosts 파일에 호스트 추가하여 통신

 

attach로 컨테이너를 실행하여 /etc/hosts 파일에 호스트 추가
마찬가지로 attac로 컨테이너를 실행하여 /etc/hosts 파일에 호스트 추가

- 컨테이너 a1과 a2에 attach로 실행시킨 다음 /etc/hosts 파일에 서로의 IP 주소와 별칭을 저장한다. 

 

- 별칭을 이용하여 서로에게 통신을 시도하면 정상적으로 ping 통신이 되는 것을 볼 수 있다.

 

- id 값을 확인하고 ip 주소를 확인하고 /etc/hosts 파일에 넣으면 별칭이나 id값으로 상대방 ip 주소를 저장할 수 있고 DNS보다 먼저 인식한다.


728x90