Heesung Yang

Docker ps 내용 바꾸기

내 이야기

docker ps 실행 시 기본으로 출력되는 항목은 다음과 같다.

docker-ps-default.png

그러나,

  • 이미지 이름이 길거나
  • container 이름이 길거나
  • 터미널 가로 크기가 좁거나

등등 다양한 이유로 위와 같이 줄바꿈이 되는 경우 가독성이 매우 떨어진다. (물론 줄바꿈이 되더라도 잘 보는 분들도 있다.) 필자는 한 줄 출력을 선호하기 때문에 아래와 같이 변경해 보았다.

아래 가이드는 Linux/Mac을 기준으로 작성하였다.

# 사용자 계정의 $HOME 디렉토리 하위에 .docker 디렉토리를 생성하고
~$ mkdir ~/.docker

# config.json 파일을 만든다.
~$ vi ~/.docker/config.json

~/.docker/config.json 내용은 아래와 같이 변경하자.

{
    "psFormat": "table {{.Names}}\\t{{.Image}}\\t{{.Status}}\\t{{.Ports}}"
}

그리고 다시 docker ps 명령어를 실행해보면,

docker-ps-change-format.png

설정한 정보만 출력된다.! 이 외에도 출력할 수 있는 정보의 종류는 다양하지만 추천하는 항목은 아래 4개다. 필자가 모든 정보를 하나하나 출력해 보았지만, 이 4개면 충분하다고 결론 내렸다.

  • Names
  • Image
  • Status
  • Ports

출력할 수 있는 모든 정보와 출력 예제는 아래를 참고하자.

Reference

설정할 수 있는 정보의 종류는 docker 공식 문서에 나와있다.

Placeholder Description
.ID Container ID
.Image Image ID
.Command Quoted command
.CreatedAt Time when the container was created.
.RunningFor Elapsed time since the container was started.
.Ports Exposed ports.
.State Container status (for example; “created”, “running”, “exited”).
.Status Container status with details about duration and health-status.
.Size Container disk size.
.Names Container names.
.Labels All labels assigned to the container.
.Label Value of a specific label for this container. For example ‘{{.Label “com.docker.swarm.cpu”}}’
.Mounts Names of the volumes mounted in this container.
.Networks Names of the networks attached to this container.

아래 docker-compose.yml 파일로 생성한 container 2개의 ps 결과를 각 항목마다 출력해보았다.

version: "3.1"
services:
  mc:
    image: nextgenhealthcare/connect
    environment:
      - DATABASE=postgres
      - DATABASE_URL=jdbc:postgresql://db:5432/mirthdb
      - DATABASE_MAX_CONNECTIONS=20
      - DATABASE_USERNAME=mirthdb
      - DATABASE_PASSWORD=mirthdb
      - DATABASE_MAX_RETRY=2
      - DATABASE_RETRY_WAIT=10000
      - KEYSTORE_STOREPASS=docker_storepass
      - KEYSTORE_KEYPASS=docker_keypass
      - VMOPTIONS=-Xmx512m
    ports:
      - 8080:8080/tcp
      - 8443:8443/tcp
    depends_on:
      - db
  db:
    image: postgres
    environment:
      - POSTGRES_USER=mirthdb
      - POSTGRES_PASSWORD=mirthdb
      - POSTGRES_DB=mirthdb
    expose:
      - 5432
    volumes:
      - db_data:/var/lib/postgres

volumes:
  db_data:

.ID

CONTAINER ID
6d568d28031b
b57416d12805

.Image

IMAGE
nextgenhealthcare/connect
postgres

.Command

COMMAND
"/entrypoint.sh ./mc…"
"docker-entrypoint.s…"

.CreatedAt

CREATED AT
2021-11-30 13:51:24 +0900 KST
2021-11-30 13:51:23 +0900 KST

.RunningFor

CREATED
59 minutes ago
59 minutes ago

.Ports

PORTS
0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8443->8443/tcp, :::8443->8443/tcp
5432/tcp

.State

STATE
running
running

.Status

STATUS
Up About an hour
Up About an hour

.Size

SIZE
0B
0B

.Names

NAMES
hl7-connect_mc_1
hl7-connect_db_1

.Labels

LABELS
com.docker.compose.version=1.29.2,com.docker.compose.config-hash=53e742ed62bef910a6e42620df5ec5f21d1497cf0838ce7753940901f4991666,com.docker.compose.container-number=1,com.docker.compose.oneoff=False,com.docker.compose.project=hl7-connect,com.docker.compose.project.config_files=docker-compose.yml,com.docker.compose.project.working_dir=/home/hsyang/hl7-connect,com.docker.compose.service=mc
com.docker.compose.container-number=1,com.docker.compose.oneoff=False,com.docker.compose.project=hl7-connect,com.docker.compose.project.config_files=docker-compose.yml,com.docker.compose.project.working_dir=/home/hsyang/hl7-connect,com.docker.compose.service=db,com.docker.compose.version=1.29.2,com.docker.compose.config-hash=b6096adc2af7ffac8ca18fc7effe3329664f30ddfa5244ec4134afec1ef58c6e

.Label

  • ~/.docker/config.json

    {
        "psFormat": "table {{.Label \"com.docker.compose.project.working_dir\"}}"
    }
    
working dir
/home/hsyang/hl7-connect
/home/hsyang/hl7-connect

.Mounts

MOUNTS
hl7-connect_db…,406e8d713670e9…
edfb9d8aa80ea0…,d740b1ce45a8c0…

.Networks

NETWORKS
hl7-connect_default
hl7-connect_default