개발/Docker

Docker - 프로세스, 쉘, 데몬, 포그라운드, 백그라운드 (kill 명령어)

잇(IT) 2022. 5. 26. 14:56
728x90

목차

1. 데몬, 쉘, 프로세스, 포그라운드, 백그라운드, 프로세스
2. Docker 프로세스 설정 및 확인
3. kill 명령어


1. 데몬, 쉘, 프로세스, 포그라운드, 백그라운드, 프로세스

 

1.1 데몬

 

- 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다.

 

1.2 쉘

 

- 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다.

 

1.3 프로세스

 

- 자신이 사용하는 컴퓨터나 기기의 저장공간에 저장되어있는 실행 코드가 메모리에 올려져 로딩되 활성화 되어있는 것이다.

 

1.4 포그라운드 프로세스

 

- 화면에서 유저와 상호작용을 하게되는 프로세스이다.

- 리눅스의 포그라운드에서는 명령어는 인식되지 않지만 인터럽트는 인식된다.

  ex) ls, pwd와 같은 명령어는 인식이되지 않지만 (ctrl + c)와 같은 인터럽트 입력은 인식된다.

- 프로세스 뒤에 &를 붙이면 백그라운드로 실행된다.

 

1.5 백그라운드 프로세스

 

- 화면뒤에서 돌아가는 프로세스이다.

- 리눅스의 백그라운드 프로세스는 명령어는 인식되지만 인터럽트는 인식되지 않는다.

  ex) ls, pwd와 같은 명령어는 인식되지만 (ctrl + c)와 같은 인터럽트 입력은 인식되지 않는다.

 

1.6 프로세스

 

- APP이 실행되어 Memory에 Load된 상태를 뜻한다.

- Memory와 HDD의 속도 차이는 약 1,000배정도 된다.


2. Docker 프로세스 설정 및 확인

 

- Docker에서 alpine 이미지는 경량화된 linux라고 생각하면 된다. 경량화를 추구하면서 보안을 강화한 이미지로 꼭 필요한 라이브러리와 시스템 데몬이 포함되어 있기 때문에 일반적인 OS 이미지에 비해서 그 사이즈가 매우 작다.

 

- alpine 이미지는 쉘 용도로 사용된다. 위와 같이 alpine 이미지를 실행시켜 컨테이너를 생성하게 되면 바뀐 쉘이 나타나는 것을 볼 수 있다.

- 즉, alpine 컨테이너 안으로 진입한 상태다.

- exit로 alpine 쉘을 종료한다.

 

- exit로 alpine 쉘을 종료하게 되면 컨테이너도 종료되는 것을 볼 수 있다.

 

- 반면에 (ctrl +pq)를 이용하여 alpine 쉘을 종료하게 되면 컨테이너는 종료되지 않은채 쉘만 종료되는 것을 볼 수 있다.

* docker attach a1

- 컨테이너를 종료 시키지 않고 쉘을 나간 컨테이너는 attach 명령어를 이용하여 다시 쉘에 접속 할 수 있다.

 

- httpd를 포트 포워딩을 시킨 다음 실행시킨다.

- httpd는 -d로 실행시켰기 때문에 데몬으로 실행된다.

- 데몬으로 실행된 컨테이너를 CLI로 확인하고 싶을때는 exec 명령어를 사용한다.

  -> docker exec -it h1 /bin/bash : 즉 httpd 서비스를 쉘의 새 인스턴스로 접속을 하고자 할 때 사용된다.

 

docker inspect [컨테이너명]

- 이미지 혹은 컨테이너 세부정보를 출력한다.

 

- HostPort 8080을 도커 80번 Port에 맞춘 정보를 볼 수 있다.

 

- h2 컨테이너의 IP 주소와 Gateway 주소를 확인 할 수 있다.

 

* w

 

- 해당 시스템에 로그인한 사용자의 정보를 출력하는 명령어다.

- TTY 항목에 tty는 로컬 로그인된 세션을 pts는 원격으로 로그인된 세션을 가르킨다.

 

* ps -aux / ps -ef

* -e, -ax는 모든 프로세를 보여준다.

* -f : 프로세스의 식별 정보를 보여준다.

* -u : 프로세스의 상태 정보를 보여준다.

 

- 둘 다 프로세스 정보를 보여주는 명령어다.

- aux는 상대적으로 식별 정보를 더 잘 보여준다.

- ef는 상대적으로 상태 정보를 더 잘 보여준다.

 

* ps -aq

 

- Container ID에 있는 모든 ID를 지우겠다는 명령어다.


3. kill 명령어

 

* kill

 

- kill은 프로세스에 시그널을 보내는 명령어다.

 

3.1 kill 명령어 사용

 

- ping 프로세스를 실행 시킨다.

 

* -aux

 

aux 명령어를 사용하여 현재 ping 프로세스의 작업 번호를 확인한다.

 

- 복제된 세션에서 ping 프로세스를 kill -9를 사용하여 중지 시킨다.

 

- 실행중인 ping이 죽는 것을 볼 수 있다.

 

- 두번째로 kill -19를 이용하여 ping을 정지 시킨다.

 

- 정지 시킨 ping을 kill -18을 이용하여 정지 시킨 ping 프로세스를 다시 시작 시킨다.

728x90