공부/기타

도커 명령어

미친사람 2026. 5. 13. 14:10
반응형

이 글은 도커를 깊게 공부하기 위한 글이 아닙니다.

서버에서 앱 하나를 실행하고, 업데이트하고, 문제가 생겼을 때 정리하는 정도만 다룹니다.

핵심 흐름은 간단합니다.

앱 폴더로 이동한다
Docker Compose 명령어를 실행한다
상태나 로그를 확인한다
필요하면 컨테이너, 이미지, 볼륨을 정리한다

1. 앱 폴더로 이동하기

도커 명령어를 실행하기 전에 먼저 앱이 설치된 폴더로 이동합니다.

예시:

cd /opt/apps/myapp

docker compose 명령어는 보통 현재 폴더의 compose.yaml 또는 docker-compose.yml 파일을 기준으로 실행됩니다.

그래서 먼저 해당 앱 폴더로 이동해야 합니다.


2. 앱 실행하기

앱을 백그라운드에서 실행합니다.

docker compose up -d

뜻은 이렇습니다.

up = 실행
-d = 백그라운드 실행

-d를 붙이지 않으면 터미널에 로그가 계속 붙어 있을 수 있습니다.

서버에서 앱을 켜둘 목적이면 보통 docker compose up -d를 사용합니다.

예시:

cd /opt/apps/myapp
docker compose up -d

3. 앱 중지하기

앱을 중지하고 컨테이너를 제거합니다.

docker compose down

보통 앱을 잠시 내리거나 다시 실행할 때 사용합니다.

docker compose down
docker compose up -d

down만 하면 보통 데이터 볼륨은 지워지지 않습니다.


4. 데이터까지 삭제하며 정리하기

컨테이너뿐 아니라 볼륨까지 삭제하려면 -v를 붙입니다.

docker compose down -v

볼륨에는 앱 데이터, 저장 파일, 설정 등이 들어 있을 수 있습니다.

그래서 down -v는 조심해서 써야 합니다.

여기서 -v는 volume, 즉 볼륨까지 같이 제거하겠다는 뜻입니다.

더 강하게 정리할 때는 다음 명령어를 씁니다.

docker compose down -v --remove-orphans

뜻은 대략 이렇습니다.

down = 컨테이너 중지 및 제거
-v = 연결된 볼륨도 제거
--remove-orphans = 현재 compose 파일에 없는 남은 컨테이너도 제거

정리하면:

docker compose down                         # 컨테이너 제거, 데이터는 보통 유지
docker compose down -v                      # 컨테이너와 볼륨 제거
docker compose down -v --remove-orphans     # 더 강하게 정리

5. 앱 업데이트하기

새 이미지를 받아올 때 사용합니다.

docker compose pull

업데이트할 때는 보통 이렇게 합니다.

cd /opt/apps/myapp
docker compose pull
docker compose up -d

6. 다시 빌드하기

이미지를 직접 빌드하는 구조라면 다음 명령어를 쓸 수 있습니다.

docker compose build --no-cache

--no-cache는 이전 빌드 캐시를 쓰지 않고 처음부터 다시 빌드하겠다는 뜻입니다.

평소에는 자주 쓸 필요가 없고, 업데이트나 빌드가 이상하게 꼬였을 때 사용하면 됩니다.

빌드 후 실행:

docker compose build --no-cache
docker compose up -d

업데이트가 꼬였거나 설정 반영이 안 될 때 사용할 수 있습니다.


7. 상태 확인하기

실행 중인 컨테이너만 확인:

docker ps

중지된 컨테이너까지 모두 확인:

docker ps -a

Compose 기준으로 확인:

docker compose ps

처음에는 이 정도만 보면 됩니다.

docker ps      = 지금 실행 중인 것
docker ps -a   = 꺼진 것까지 전부

8. 로그 확인하기

앱이 제대로 실행되는지 확인할 때 로그를 봅니다.

컨테이너 이름을 알고 있을 때:

docker logs -f myapp

최근 로그 100줄만 보기:

docker logs --tail=100 myapp

-f는 follow의 의미로, 새 로그를 계속 따라가며 보여줍니다.

--tail=100은 최근 100줄만 보겠다는 뜻입니다.

Compose 기준으로 전체 로그 보기:

docker compose logs -f

로그 화면에서 빠져나오려면 보통 Ctrl + C를 누르면 됩니다.


9. 재시작하기

특정 컨테이너만 재시작:

docker restart myapp

Compose 기준으로 재시작:

docker compose restart

가볍게 다시 켜고 싶을 때 사용합니다.


10. 컨테이너 안으로 들어가기

컨테이너 내부 파일을 확인해야 할 때 사용합니다.

docker exec -it myapp sh

옵션과 이름은 이렇게 보면 됩니다.

exec = 실행 중인 컨테이너 안에서 명령 실행
-i = 입력을 유지
-t = 터미널처럼 사용
myapp = 컨테이너 이름
sh = 컨테이너 안에서 실행할 쉘

컨테이너 안에서 나오려면:

exit

직접 들어가지 않고 명령어만 실행할 수도 있습니다.

docker exec -it myapp sh -lc 'ls -la /app/save'

위 명령은 이렇게 나눠서 보면 됩니다.

docker exec = 컨테이너 안에서 명령 실행
-it = 터미널 입력을 받을 수 있게 실행
myapp = 컨테이너 이름
sh -lc = 쉘을 열고 뒤의 문자열 명령을 실행
'ls -la /app/save' = /app/save 폴더 내용을 자세히 보기

ls는 목록 보기, -la는 숨김 파일까지 자세히 보겠다는 뜻입니다.

Compose 기준으로 실행할 수도 있습니다.

docker compose exec myapp sh -lc 'ls -la /app/save'

11. 특정 파일 찾기

컨테이너 내부에서 특정 파일을 찾아야 할 때:

docker exec -it myapp sh -lc 'find /app -name "파일이름" -print'

여기서 find /app/app 폴더 아래를 찾는다는 뜻입니다.

-name "파일이름"은 찾을 파일 이름 조건이고, -print는 찾은 결과를 화면에 출력하라는 뜻입니다.

예시:

docker exec -it myapp sh -lc 'find /app -name "__password.txt" -print'

Compose 기준:

docker compose exec myapp sh -lc 'find /app -name "__password.txt" -print'

12. 특정 파일 삭제하기

컨테이너 내부의 특정 파일을 삭제해야 할 때:

docker exec -it myapp sh -lc 'rm -f /app/save/파일이름'

rm은 파일 삭제 명령입니다.

-f는 force의 의미로, 파일이 없어도 에러를 크게 내지 않고 강제로 처리합니다.

예시:

docker exec -it myapp sh -lc 'rm -f /app/save/__password.txt'

Compose 기준:

docker compose exec myapp sh -lc 'rm -f /app/save/__password.txt'

삭제 후 컨테이너를 재시작합니다.

docker restart myapp

또는:

docker compose restart

13. 이미지 확인하기

서버에 받아져 있는 도커 이미지 목록을 확인합니다.

docker image ls

짧은 명령어로는 아래도 같습니다.

docker images

이미지가 디스크를 얼마나 쓰는지 확인하려면:

docker system df

이미지를 삭제하기 전에 먼저 어떤 이미지가 있는지 확인하는 용도로 사용합니다.


14. 이미지 삭제하기

사용하지 않는 이미지를 삭제할 때 사용합니다.

docker image rm 이미지이름:태그

예시:

docker image rm myapp:latest

여러 이미지를 한 번에 삭제:

docker image rm myapp:latest myapp:old

이미지를 지워도 볼륨 데이터가 자동으로 지워지는 것은 아닙니다.

반대로 실행 중인 컨테이너가 사용 중인 이미지는 바로 삭제되지 않을 수 있습니다.


15. 볼륨 확인하기

볼륨 목록 확인:

docker volume ls

특정 볼륨 정보 확인:

docker volume inspect myapp_data

ls는 목록 보기, inspect는 자세한 정보 보기라고 생각하면 됩니다.

볼륨은 데이터 저장소라고 보면 됩니다.

앱 데이터가 들어 있을 수 있으니 삭제할 때 주의해야 합니다.


16. 볼륨 삭제하기

특정 볼륨 삭제:

docker volume rm myapp_data

여러 개를 한 번에 삭제:

docker volume rm myapp_data myapp_cache

볼륨 삭제는 데이터 삭제와 연결될 수 있습니다.

실행 전에 정말 지워도 되는지 확인하는 게 좋습니다.


17. 컨테이너 강제 삭제하기

컨테이너가 꼬였거나 일반 삭제가 안 될 때 강제로 지울 수 있습니다.

docker rm -f myapp

rm은 컨테이너 제거, -f는 강제 제거입니다.

여러 컨테이너를 한 번에 지울 수도 있습니다.

docker rm -f myapp myapp-worker

-f는 강제 삭제입니다.

실행 중인 컨테이너도 바로 삭제할 수 있으니 조심해서 사용합니다.


18. 자주 쓰는 명령어만 모아보기

앱 폴더로 이동:

cd /opt/apps/myapp

실행:

docker compose up -d

중지 및 컨테이너 제거:

docker compose down

중지 및 볼륨까지 제거:

docker compose down -v

강하게 정리:

docker compose down -v --remove-orphans

이미지 업데이트:

docker compose pull

캐시 없이 빌드:

docker compose build --no-cache

상태 확인:

docker ps
docker ps -a
docker compose ps

로그 확인:

docker logs -f myapp
docker compose logs -f

이미지와 용량 확인:

docker image ls
docker system df

볼륨 확인:

docker volume ls

재시작:

docker restart myapp
docker compose restart

19. 자주 보이는 옵션 뜻

도커 명령어에서 자주 보이는 옵션만 모아보면 이렇습니다.

-d = 백그라운드 실행
-v = 볼륨까지 처리
-f = 강제 실행 또는 계속 따라보기
-it = 컨테이너 안에 터미널로 들어갈 때 사용
--tail=100 = 최근 100줄만 보기
--no-cache = 캐시 없이 다시 빌드
--remove-orphans = 남은 불필요한 컨테이너 제거

주의할 점은 -f가 명령어에 따라 의미가 조금 다르다는 것입니다.

docker logs -f      # 로그를 계속 따라보기
docker rm -f        # 컨테이너 강제 삭제
rm -f 파일이름      # 파일 강제 삭제

즉, 같은 -f라도 로그에서는 follow, 삭제에서는 force 의미로 쓰입니다.


마무리

일반적으로는 아래 흐름만 기억하면 됩니다.

cd /opt/apps/myapp
docker compose pull
docker compose up -d
docker compose logs -f

내릴 때:

docker compose down

삭제 전에 확인할 때:

docker ps -a
docker image ls
docker volume ls
docker system df

데이터까지 지우고 새로 시작하고 싶을 때:

docker compose down -v --remove-orphans
docker compose pull
docker compose up -d

단, -v는 볼륨을 삭제합니다.

볼륨에는 저장 데이터가 들어 있을 수 있으니, 잘 모를 때는 먼저 docker compose down만 사용하는 것이 좋습니다.

반응형