docker exec script

기존의 docker exec 실행 과정:

command line 인터페이스에서 docker exec를 실행하는 다음의 과정은 타이핑이 많고 다소 번거롭게 느껴졌다.

Bash
root:/# docker ps          # 컨테이너 목록에서 container_id를 알아냄
CONTAINER ID   IMAGE                     COMMAND                  CREATED        STATUS                 PORTS
                                                                                    NAMES
82c74c62c057   node:18.19-alpine         "docker-entrypoint.s…"   47 hours ago   Up 6 hours             0.0.0.0:9970-9972->9970-9972/tcp, :::9970-9972->9970-9972/tcp                                                               node-18.19-alpine
de21f0a597ce   alpine/node:latest        "/bin/sh /home/node/…"   2 days ago     Up 2 days              0.0.0.0:9990-9992->9990-9992/tcp, :::9990-9992->9990-9992/tcp                                                               alpine-node-1
108328fc0449   postgres:latest           "docker-entrypoint.s…"   5 months ago   Up 8 days              5432/tcp, 0.0.0.0:5436->5436/tcp, :::5436->5436/tcp                                                                         postgres
6c58225e976e   gitlab/gitlab-ce:latest   "/assets/wrapper"        6 months ago   Up 4 weeks (healthy)   0.0.0.0:32769->22/tcp, :::32769->22/tcp, 0.0.0.0:9780->80/tcp, :::9780->80/tcp, 0.0.0.0:32768->443/tcp, :::32768->443/tcp   gitlab

root:/# docker exec -it 6c5822 /bin/bash   # 쉘 실행
root@gitlab:/# 

간소화 스크립트 코드 작성:

그래서 다음과 같이 스크립트를 작성해보았다.

#!/bin/bash

# script file name: exec.gitlab.sh

if [ $# -ge 3 ]; then
    echo "Usage: $0 [command]"
    exit
fi

container_name='gitlab'
command="/bin/bash"

if [ $# -ge 1 ]; then
    command=$1
fi

dockerid=`docker ps | grep -i $container_name | awk '{ print $1 }'`
docker exec -it $dockerid $command

실행 예:

실행 예는 다음과 같다. 타이핑 수와 실행단계가 줄었다.

root:/# ./exec.gitlab.sh ls     # ls 실행
RELEASE  boot  gitlab  lib32   linuxrc  opt   run   sys  var
assets   dev   home    lib64   media    proc  sbin  tmp
bin      etc   lib     libx32  mnt      root  srv   usr
root:/# ./exec.gitlab.sh pwd    # pwd 실행
/
root:/# ./exec.gitlab.sh        # 인자가 없다면 쉘 실행
root:/#

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다