Docker

Docker 관리 스크립트 (참고)

정도비_ 2025. 5. 22. 17:22
반응형

이번에는 생성된 Docker Container를 관리하는 데 유용한 스크립트에 대해 소개드리겠습니다.

Docker 명령어는 자주 사용하게 되지만, 매번 직접 입력하기는 번거로운 작업입니다.
그래서 저는 자주 사용하는 Docker 실행 명령어들을 bash 스크립트로 만들어 편리하게 사용하고 있습니다.


✅ 기본 Docker Container 실행 명령어

컨테이너 내부로 접속하려면 아래 명령어를 사용합니다:

docker exec -it <컨테이너 이름 또는 ID> /bin/bash

# 예시
docker exec -it basic /bin/bash
  • -i : 표준 입력을 활성화합니다.
  • -t : TTY 할당으로 터미널처럼 사용할 수 있게 해줍니다.

 

저는 Dockerfile 내에서 SSH 기능도 미리 설치해두었기 때문에, 컨테이너에 접속하면 SSH 관련 로그가 함께 출력됩니다.


🛠️ Docker 실행 스크립트 예시

아래는 제가 실제로 사용하는 bash 스크립트입니다.
컨테이너가 존재하지 않거나, 실행 중이 아닐 때 자동으로 시작해주는 기능이 포함되어 있으며,
필요에 따라 특정 유저로 접속할 수도 있습니다.

#!/bin/bash

CMD="$1"
CONTAINER="$2"
USER="$3"

# Check if the specified container does not exist in the list of containers
if ! docker ps -a --format '{{.Names}}' | grep -q "^$CONTAINER$"; then
    echo "Container $CONTAINER does not exist."
    exit
fi

# Check if the container is running
RUNNING=$(docker inspect -f '{{.State.Running}}' $CONTAINER 2>/dev/null)

if [ "$CMD" = "stop" ]; then
    if [ "$RUNNING" = "true" ]; then
        # Stop the container if it's running
        docker stop $CONTAINER
    fi
    exit
fi

if [ "$RUNNING" = "false" ]; then
    # Start the container if not running
    docker start $CONTAINER
fi

# Re-check if the container is running
RUNNING=$(docker inspect -f '{{.State.Running}}' $CONTAINER 2>/dev/null)

# Connect to the running container and execute commands as the specified user if provided
if [ "$RUNNING" = "true" ]; then
    if [ -n "$USER" ]; then
        # Run the command as the specified user
        docker exec -it -u $USER $CONTAINER /bin/bash
    else
        # Run the command without specifying the user
        docker exec -it $CONTAINER /bin/bash
    fi
fi

💡 스크립트 사용 방법

스크립트를 예를 들어 docker_run.sh라는 이름으로 저장하고, 실행 권한을 부여한 뒤 다음과 같이 사용합니다:

chmod +x docker_run.sh

# 기본 실행
./docker_run.sh run basic

# 특정 유저로 실행
./docker_run.sh run basic root

# 컨테이너 중지
./docker_run.sh stop basic

이런 식으로 자주 쓰는 명령어를 간단하게 스크립트로 처리하면 Docker 사용이 훨씬 편해집니다.


필요하신 분은 이 스크립트를 개인 환경에 맞게 수정하여 사용하시면 좋겠습니다.

반응형