모든 도커 이미지에서 명령어가 작동되는 것이 아닙니다.
우선 해당 이유를 알아보도록 하겠습니다.
명령어가 사용이 안되는 이미지가 있는데요?
도커 이미지가 가진 파일들 중 명령어를 사용 가능하게 하는 파일이 있는 이미지도 있고, 그렇지 않은 이미지도 있습니다.
예를 들어 제일 처음 알아볼 ls라는 명령어는 hello-wolrd 이미지에서는 실행되지 않습니다.
hello-world 이미지를 사용한다면 다음과 같은 오류가 발생합니다.
도커 명령어
나와있지 않은 명령어와, 옵션들, 자세한 사용 방법은 아래 사이트를 참고하시는 것을 추천드립니다.
https://docs.docker.com/engine/reference/commandline/docker/
docker
docker: The base command for the Docker CLI.
docs.docker.com
저는 자주 사용되는 기본적인 명령어만 살펴보겠습니다.
도커 컨테이너 나열하기
docker ps
ps는 process status 입니다.
- CONTAINER ID : 컨테이너의 고유한 아이디 해쉬값입니다. 실제로는 더 길지만 일부분만 표시됩니다.
- IMAGE : 컨테이너 생성 시 사용한 도커 이미지 입니다.
- COMMAND : 컨테이너 시작시 실행될 명령어 입니다. 대부분 이미지에 내장되어 있습니다.
- CREATED : 컨테이너가 생성된 시간입니다.
- STATUS : 컨테이너의 상태로, 현재 실행중인 경우 UP, 종료는 Exited, 일시정지 상태는 Pause 입니다.
- PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트입니다.
- NAMES : 컨테이너의 고유한 이름입니다. 컨테이너 생성 시 --name 옵션을 통해 설정하지 않은 경우 도커 엔진이 임의의로 설정합니다. ID와 마찬가지로 중복이 없으며 docker rename 명령어로 이름을 변경할 수 있습니다.
원하는 속성만 보기
docker ps --format 'table{{.원하는 속성}}'
+ 탭 간격 추가(\t), 여러개 보기
docker ps --format 'table{{.원하는 속성}} \t {{.원하는 속성}}'
모든 컨테이너 나열
docker ps -a
a 는 all 입니다.
예시
아무것도 실행 중이지 않을 경우

컨테이너가 실행중인 경우

한 개

여러개 + 탭간격(\t)

도커 컨테이너의 생명주기
생성 (create) $\to$ 시작 (start) $\to$ 실행 (running) $\to$ 중지 (stopped) $\to$ 삭제 (deleted)
1. 컨테이너 생성하고 실행하기
생성하기
docker create 이미지
실행하기
docker start -a 컨테이너 ID / 이름
이때 컨테이너 아이디는 모두 다 입력할 필요 없으며, 구분이 가능할 경우에 중간에서 짤라도 가능합니다.
-a는 attach 입니다
한번에 진행하기
docker run 이미지
docker run 이미지 =
docker create 이미지 + docker start 컨테이너 ID / 이름
예시
생성하기

실행하기

한번에 진행하기

2. 컨테이너 중지하기
docker stop 컨테이너 ID / 이름
docker kill 컨테이너 ID / 이름
무슨 차이인가요?
Stop은 하던 작업들을 완료한 후 컨테이너를 중지 시킵니다.
Kill은 어떠한 것도 기다리지 않고 바로 컨테이너를 중지시킵니다.
예시
stop 사용


kill 사용

3. 컨테이너 삭제하기
중지된 컨테이너 삭제
docker rm 컨테이너 ID/이름
예시

붉은 부분을 삭제해 보겠습니다.

모든 컨테이너 삭제
docker rm $(docker ps -a -q)
예시
기존 상태입니다.


이미지 삭제
docker rmi 이미지 ID
4. 사용하지 않는 컨테이너, 이미지, 네트워크 등 모두 삭제
docker system prune
이는 실행중인 컨테이너에는 영향을 주지 않습니다.
예시
실행중인 컨테이너에 명령 전달하기
docker exex 컨테이너 ID / 이름
예시
도커 컨테이너 내부로 들어가 머물기
docker exec -it 컨테이너 ID / 이름 명령어
-it는 -i와 -t를 합친 옵션으로 interactieve terminal 입니다.
예시
redis를 예시로 사용하겠습니다.
만약 -it 옵션을 사용하지 않는다면 다음과 같은 결과가 발생합니다.

그러나 -it 옵션을 사용하면 다음과 같습니다.

즉 it 옵션을 사용하면 컨테이너 내부에 머물 수 있게 되는 것입니다.
실행 중인 컨테이너에 계속해서 명령어 전달하기
docker exec -it 컨테이너 ID / 이름 sh
해당 터미널 환경에서 나오기 위해서는 Control + D 를 입력하시면 됩니다.
예시
도커 이미지 내부 파일 시스템 구조 보기
docker run 이미지 ls
예시
docker run alpine ls

'Docker' 카테고리의 다른 글
[Docker] - (3) 도커를 사용하여 간단한 SpringBoot 어플 실행하기 (8) | 2022.06.29 |
---|---|
[Docker] - (2) 도커 이미지 만들기 (0) | 2022.06.23 |
[Docker] - (0) 도커 컨테이너와 이미지 (3) | 2022.06.22 |