겉바속촉
[DOCKER] 도커_컨테이너 명령어 본문
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
'IT 일기 (상반기) > DOCKER' 카테고리의 다른 글
[DOCKER] 도커_이미지 생성 (0) | 2020.12.31 |
---|---|
[DOCKER] 도커_Network static하게 설정하기 (0) | 2020.12.31 |
[DOCKER] 도커_v 옵션 활용하기 (0) | 2020.12.31 |
[DOCKER] 도커_컨테이너 네트워크 설정, 생성, 실행 (0) | 2020.12.31 |
[DOCKER] 도커_컨테이너 생성, 시작, 정지 (0) | 2020.12.30 |