겉바속촉

[DOCKER] 도커_컨테이너 명령어 본문

IT 일기 (상반기)/DOCKER

[DOCKER] 도커_컨테이너 명령어

겉바속촉 2020. 12. 31. 12:44
728x90
반응형

 

DOCKER에 대해서

 

공부해보도록 하겠습니다

 

!^^!

 

 

 


 

도커 컨테이너 목록을 살펴보고 싶다면

 

docker container ls

docker ps

두 가지 모두 쓸 수 있습니다

 

 

하지만 running중인 컨테이너만 출력이 되기 때문에

 

stop되어 있는 컨테이너도 보고 싶다면

 

ls -a 명령을 내려주세요

 

 

컨테이너 가동을 확인하려고 할 때는

docker container stats 컨테이너 식별자

 

 

그리고 컨테이너에 명령을 내릴 떄 에러가 나는 경우가 있습니다

nginx 같은 경우는 ps 명령을 제공하지 않거든요

 

컨테이너에서 nginx 이미지 내에 해당명령을 제공해주어야 사용이 가능합니다:)

 

그래서 그런 것들을 확인하려면 top을 내려주시면 됩니다!!!

 

 

 

docker top 컨테이너 식별자

process확인하는 명령

(running중이 아니라면 오류 출력)

 

 


컨테이너 시작

 

start --> a 옵션 주면 start하면서 attach 가능(커넥트) --> 무조건 커넥트 되는 것이 아니고 stop되어 있는 컨테이너가                                                                               shell이 있어야 가능!!

 

run --> it 옵션 주면 create하면서 start (바로 커넥트)

 

 

 

 

컨테이너 정지

 

docker container stop 옵션

 

예를 들어 2초 뒤에 정지시키고 싶다면

docker container stop -t 2 컨테이너 식별자

 

 

 

 

네트워크 상세정보 확인

 

 

webap-net 이라는 네트워크를 생성했습니다

nginx 이미지를 올릴거에요:)

 

 

docker network inspect webap-net |more

생성해준 webap-net에 대한 상세정보를 확인하려고합니다

 

 

아래에서 보면 IPAM이라고 있는 데

IP Automatic Manager 라는 것인데 DHCP기능을 합니다

이를 기반으로 컨테이너를 올리면

서브넷 기반의 IP를 자동으로 할당해주는 역할을 합니다

 

현재 게이트웨이는 1번으로 설정되어있네요:)

MacAddress -> 2계층 주소

IPv4Address -> 3계층 주소

 

해당 브릿지에 어떤 컨테이너가 올라갔는 지 확인 가능합니다

 

 

브릿지 따로 이름 안 정해주면 다음과 같이 다 볼 수 있음

(일부만 캡쳐했습니다)

 

 

 

docker ps

컨테이너 리스트를 보겠습니다:)

 

docker attach 65

첫번째 보이는 컨테이너에 attach 하겠습니다

shell이 동작하고있지 않아서 attach 명령을 주고 그냥 끝입니다

어떤 명령도 먹히지가 않아요

 

 

docker ps 로 다시한번 볼게요

bash가지고 있는 컨테이너에다 attach 해볼게요

그랬더니 컨테이너에 붙는 것을 확인하실 수 있습니다:)

 

이 attach 명령은 아무 컨테이너나 연결되는 것이 아님을 알 수 있네요!!

bash가 동작 중이어야 attach가 되는거네요

 

detach할때는 ctrl + p, ctrl + q 주셔야지

exit 하면 종료가 됩니다

 

exit하고서 docker ps를 해보면

bash자체가 죽기 때문에 shell이 죽으니까 ---> 컨테이너는 stop입니다

 

그런데 처음에 명령을 줄때 죽으면 다시 restart되라고 명령을 주었기 때문에

다음과 같이 다시 restart된 상태입니다 3초 전이라고 뜨는 거 보이시죠??

 

 

shell로 커넥트해서 수동작업을 하고 싶다면

exec 명령을 이용해서 shell을 명시적으로 컨테이너에 띄어주시면 됩니다

 

it옵션을 지정해서 인터랙티브하게 터미널 부여해주는 것이죠

 

docker ps로 어떤 컨테이너로 할 지 보고

docker exec -it 7e /bin/bash

 

 

 

그럼 여기서 exit 하면

 

nginx랑 shell 둘다 돌고 있는데 

둘다 꺼질까?....

 

nononono

 

shell은 종료가 되겠지만 nginx 데몬은 여전히 running중일 것입니다

그럼 컨테이너 또한 여전히 running중이겠죠??

 

메인서비스와 컨테이너는 수명주기를 함께하기 때문이죠!!

 

그래서 exit해도 상관없습니다

 

 

하지만

ctrl + p, ctrl + q 로 detach를 해줄게요

그럼 shell은 여전히 동작중일 것이고

 

 

다시 attach 해보면~

명령을 먹지 않습니다

 

 

attach보다 exec로 해당 컨테이너에 접근하는 게 더 좋겠네요

exec이 더 일반적인 방식이라고 합니다ㅠㅠ

 

docker ps -a 로 보니까 다 죽어버렸습니다

 

 


 

 

가동 컨테이너의 포트 전송 확인

 

 

docker container port 컨테이너이름

가동 중인 컨테이너에서 실행되고 있는 프로세스가 전송되고 있는 포트를 확인할 때

명령을 내려주는 것입니다:)

 

0.0.0.0:8000 -> 80/tcp  포트가 명령을 내려주었더니

순서가 바뀌어서 출력이 됩니다

 

80/tcp -> 0.0.0.0:8000

포트 명령을 내려주면 컨테이너번호가 먼저 나오고 그리고 호스트 번호가 출력이 됩니다

 

 

 

 

well-known port : 포트번호가 잘 알려진 포트라는 뜻

 

1부터 1023까지 쓰는 데 보통 23번 이하까지가 well-known port

 

 

명령어는 cat /etc/services 내려주면 포트번호와 각각 매핑된 서비스들도 볼 수 있습니다

 

 

grep 80 /etc/services 내려주면 80 포함하는 것들만 출력해내고

 

 

 

grep -w 80 /etc/services으로 워딩 주는 것도 가능

 

 

 

컨테이너 이름 변경

 

docker container rename 겉바 속촉

컨테이너 이름이 겉바 ---> 속촉으로 변경됩니다

 

 

 

 

컨테이너 -----> 호스트로  파일 복사

 

docker cp 컨테이너 식별자:컨테이너 안 파일 경로 호스트 디렉토리 경로

 

컨테이너에 있는 일부 파일을 백업하고 싶을 때 사용하면 됩니다

 

 

호스트 -----> 컨테이너로  파일 복사

 

docker cp 호스트 파일 컨테이너 식별자:컨테이너 안 파일 경로

 

 

 

 

ip주소 확인하는 방법 3가지

 

  • docker inspect dns-web
  • docker exec dns-web cat /etc/hosts
  • docker inspect bridge dns-web
728x90
반응형