반갑습니다!
이번 포스트에서는 실행중인 컨테이너에
명령 실행하는 내용부터 살펴보도록 하겠습니다 ^^
1. 실행중인 컨테이너에 명령 실행하기 : $ docker exec [옵션] [컨테이너ID 또는 이름] [명령인자]
명령어는
$ docker exec -it [컨테이너ID 또는 이름] /bin/bash 또는
$ docker exec -it [컨테이너ID 또는 이름] /bin/sh가 되겠습니다 ^^
alpine 태그가 붙은 것과 아닌 것의 차이는,
저번 포스트에서 말씀드렸다시피 경량화가 되었는가 아닌가의 차이입니다 ^^
따라서 사용하는 쉘 프로그램도 조금 다른데요
예시에서 사용하는 httpd 이미지는 디폴트 패키지로
ubuntu 패키지를 사용하는데, 기본적으로 bash라는 쉘 프로그램을 사용합니다 ^^!
하지만 alpine 태그가 달려있는 경우에는 BusyBox 유틸리티가 사용되는데,
BusyBox 유틸리티의 쉘 프로그램으로 sh 쉘입니다
때문에 일반 패키지 이미지에서는 bash 쉘 프로그램을 사용하고,
alpine에서는 sh 쉘 프로그램을 사용하므로
-it옵션을 사용하여
외부 호스트 PC에 있는 키보드를 내부에 있는 해당 프로그램의 표준 입력으로 연결 할 때
bash냐 sh냐를 구분해서 사용해야 하겠습니다 ^^
alpine 태그가 붙은 httpd 이미지에 대해서
/bin/bash 가 동작하는지 안 하는지 확인하기 위해서 준비한 이미지입니다 ^^
/bin/sh로 명령을 내렸을 때에는 정상적으로 동작을 하여서
해당 컨테이너에서 실행중인 프로그램에 대해서 쉘이 동작을 하였는데요
/bin/bash 명령에 대해서는
exec failed라는 메세지가 출력된 것을 확인할 수 있겠습니다 ^^
-it 옵션과 /bin/sh를 이용하여 컨테이너 내부 프로그램에 대해 쉘이 연결되었으니
여러 명령어를 통해 내부 디렉토리 구조에 대해 간단하게 살펴본 부분입니다 ^^
httpd 이미지의 apache 프로그램과 관련된 기본 디렉토리들도 보입니다 ^^!
httpd.conf라는 파일은
apache 웹 서버의 기본 설정과 관련된 내용이 기재 되어있는 파일인데요
cat 명령어를 통해 살펴볼 수 있습니다 ^^
컨테이너를 실행한 다음 설정을 건드리거나 할 일은 별로 없지만,
내부적으로 어떤 설정들이 되어 있는지 한 번 조회해보고 참고해볼 때
해당 명령어를 사용해서 살펴보시면 되겠습니다 ^^
2. 실행중인 컨테이너에 연결하기 : $ docker attach [컨테이너ID 또는 이름]
저번 포스트에서 잠깐 소개해드렸던 명령어인데요
$docker attach 명령어를 이용하면 현재 실행중인 컨테이너에 연결할 수가 있습니다 ^^
예시를 위해서 ubuntu 이미지를 이용해 백그라운드로 실행한 다음,
해당 명령어를 이용해서 컨테이너에 연결해서 내부의 쉘 프로그램에 접속하였습니다 ^^!
exec와 attach 사이에 차이가 있습니다
exec 명령은 해당 컨테이너에 신규 명령을 실행하는 것이고,
attach는 컨테이너에 연결하는 명령입니다 ^^
컨테이너 내부에서 동작중인 프로그램에 대해서
$ ls 명령어를 통해 디렉토리 구조를 한 번 조회했습니다 ^^
쉘 연결에서 나오려면 $ exit 명령어를 실행시켜주시면
다시 메인 프롬프트로 돌아옵니다 ^^!
3. 모든 컨테이너 종료하기 : $ docker stop $(docker ps -a -q)
지난 포스트에서 $ docker ps -a -q 명령어를 소개해드렸었습니다
-q 옵션을 사용하면 해당 컨테이너들의 ID 값만 조회를 할 수 있다고 말씀드렸었는데요
위와 같이 조합하여서
우선 컨테이너들의 이름만 조회한 다음에,
해당 컨테이너들에 대해서 일괄적으로 stop 명령을 내릴 수 있습니다 ^^
stop 명령 뿐 아니라 pause, unpause, restart도 가능하고 rm도 가능합니다 ^^
4. 모든 컨테이너 삭제하기 : $ docker rm $(docker ps -a -q)
앞서 컨테이너들에 대해 일괄적으로 종료 명령을 내렸습니다
해서 STATUS가 Existed가 되었는데요
도커 컨테이너를 삭제하려면 우선은 stop 된 상태여야 합니다 ^^
이제 rm 명령을 통해서 모든 컨테이너들을 일괄적으로 삭제하였습니다 !
5. 모든 이미지 삭제하기 : $ docker rmi $(docker images -q)
그리고 이미지들도 한 번 모두 삭제해보겠습니다 ^^
이미지들을 삭제하는 명령어는 $ docker rmi [이미지ID 또는 이름]이었습니다!
해당 명령 실행 후 다시 $ docker images 또는 $ docker image ls를 실행해보면
아무런 이미지도 조회되지 않는 것을 확인할 수 있겠습니다 ^^!
그 외 명령어 세 개를 더 소개해드리자면,
① $ docker container prune
정지된 모든 컨테이너 삭제
② $ docker image prune
실행 중인 컨테이너의 image 외의 모든 이미지 삭제
③ $ docker system prune
정지된 컨테이너, 실행 중인 컨테이너의 이미지 외의
이미지, 볼륨, 네트워크 삭제
이 있습니다 ^^!
이렇게 도커 이미지와 컨테이너에 관련된 가장 기본적인
주요 명령어들에 대해서 살펴보았습니다 ^^
다음 포스트부터는 docker file 작성에 대해서 알아보도록 하겠습니다!
읽어주셔서 감사드리고 다음 포스트에서 찾아뵙겠습니다 ^^!
'Docker > Docker 주요 명령어 익히기' 카테고리의 다른 글
[Docker 기본 명령어] 9. docker history / cp / diff 명령어 알아보기 (0) | 2024.08.15 |
---|---|
[Docker 기본 명령어] 7. docker system df와 docker container stats 명령어 사용해보기 (0) | 2024.08.13 |
[Docker 기본 명령어] 6. docker run 명령어 중 -v 옵션 사용해보기 (0) | 2024.08.13 |
[Docker 기본 명령어] 5. docker run의 -p 옵션과 컨테이너로 웹 서버 apache 사용해보기 (0) | 2024.08.13 |
[Docker 기본 명령어] 4. docker pause, unpause, stop, restart 명령어 사용해보기 (0) | 2024.08.13 |