클라우드 + DevOps/Docker

Docker 이미지 / 컨테이너 관리 및 모니터링 명령어

gamjadori 2024. 2. 13. 16:14
728x90

<Docker 이미지 / 컨테이너관리 및 모니터링>

<이미지 레이어 상세 정보확인>

  • docker image inspect
ubuntu@host1:~$ docker image inspect noderun:1.0
[
    {
        "Id": "sha256:d77d5ca0759f617e8b58f55f8663ccfab8dcb5a91b8ea436a2ef72d2c3637c75",
        "RepoTags": [
            "noderun:1.0"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2024-01-12T15:06:22.590946289+09:00",
        "Container": "",
        "ContainerConfig": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": null,
            "Cmd": null,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "DockerVersion": "",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "6060/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NODE_VERSION=20.10.0",
                "YARN_VERSION=1.22.19"
            ],
            "Cmd": [
                "node",
                "runapp.js"
            ],
            "ArgsEscaped": true,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "/app",
            "Entrypoint": [
                "/sbin/tini",
                "--"
            ],
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 138195448,
        "VirtualSize": 138195448,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/5is04njm3v22ntznhraiafbwe/diff:/var/lib/docker/overlay2/5fq5jijqwdg5bd6lzdso18nsj/diff:/var/lib/docker/overlay2/c457d5675559d3a00b530dc8a8f67ab6165e2a51ab5e1f68596bd61c43640f1f/diff:/var/lib/docker/overlay2/fbdb2ea6a075c1258ad99903f5d6991e87d7a0ad8b3051bac617c23b7fce489f/diff:/var/lib/docker/overlay2/24431429ca0ec3e5f728af16f02f9d0a4addd1146ab5e73931b861c6c01f6ac9/diff:/var/lib/docker/overlay2/a1143a56d306a3158aefff22ce2449742ce3838ea2c7c75c44e10ca76a143aaa/diff",
                "MergedDir": "/var/lib/docker/overlay2/ph5kr1yf2keay0sugjy8tcyiz/merged",
                "UpperDir": "/var/lib/docker/overlay2/ph5kr1yf2keay0sugjy8tcyiz/diff",
                "WorkDir": "/var/lib/docker/overlay2/ph5kr1yf2keay0sugjy8tcyiz/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:617df26c9e2bec4e63eed45acaa78b253ac74e1cd0dd74da35b050f3ef707d47",
                "sha256:adc99b871e1510bf40eeaf5d2b126d13023a8d80c06b17f26bf0c6405897dbd4",
                "sha256:5ffdd8016f562a858fcd4935706183d7296f539e7edbbf4b6a59cab93ba09caa",
                "sha256:9e07a17fe742080c4e44ee090e15ac2f639e80715cad77160561ab9bba8c32a0",
                "sha256:f944519cc916047c783478fdc8d923e9166e3d99fe65f365d889ddd824b4f23f",
                "sha256:9490a08daae5de603c3d4b0cf2d3a1eb780fae9a8476395c54d82ead8aae49d2",
                "sha256:f25b7a274c7de8a4e5bb450fe518518ea114de76ce882effbdbc3b24286c7aee"
            ]
        },
        "Metadata": {
            "LastTagTime": "2024-01-12T15:06:22.704448228+09:00"
        }
    }
]

 

<특정 이미지 레이어 확인 방법>

ubuntu@host1:~$ docker image inspect --format="{{.Os}}" httpd:2.4
linux
ubuntu@host1:~$ docker image inspect --format="{{.RepoTags}}" httpd:2.4
[httpd:2.4]

 

<이미지 제작 히스토리 명령어>

  • docker image history
ubuntu@host1:~$ docker image history noderun:1.0
IMAGE          CREATED       CREATED BY                                       SIZE      COMMENT
d77d5ca0759f   2 days ago    CMD ["node" "runapp.js"]                         0B        buildkit.dockerfile.v0
<missing>      2 days ago    ENTRYPOINT ["/sbin/tini" "--"]                   0B        buildkit.dockerfile.v0
<missing>      2 days ago    EXPOSE map[6060/tcp:{}]                          0B        buildkit.dockerfile.v0
<missing>      2 days ago    COPY runapp.js . # buildkit                      317B      buildkit.dockerfile.v0
<missing>      2 days ago    WORKDIR /app                                     0B        buildkit.dockerfile.v0
<missing>      2 days ago    RUN /bin/sh -c apk add --no-cache tini curl …   2.36MB    buildkit.dockerfile.v0
<missing>      6 weeks ago   /bin/sh -c #(nop)  CMD ["node"]                  0B

<missing>      6 weeks ago   /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B

<missing>      6 weeks ago   /bin/sh -c #(nop) COPY file:4d192565a7220e13…   388B

<missing>      6 weeks ago   /bin/sh -c apk add --no-cache --virtual .bui…   7.76MB

<missing>      6 weeks ago   /bin/sh -c #(nop)  ENV YARN_VERSION=1.22.19      0B

<missing>      6 weeks ago   /bin/sh -c addgroup -g 1000 node     && addu…   121MB

<missing>      6 weeks ago   /bin/sh -c #(nop)  ENV NODE_VERSION=20.10.0      0B

<missing>      6 weeks ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]               0B

<missing>      6 weeks ago   /bin/sh -c #(nop) ADD file:80331a5d882ac8a70…   7.06MB

 

<컨테이너 상태 및 로그 모니터링>

1. docker container top: 사용 중인 프로세스 확인

2. 포트 확인

  • ps -f | grep (포트 번호)

  • docker container port (컨테이너 이름): 포트 바인딩 확인 가능

3. docker container status (컨테이너 이름): 실시간으로 업데이트되어 서버 모니터링 가능

 

4. cadvisor 컨테이너

<컨테이너 구축>

ubuntu@host1:~$ docker pull gcr.io/cadvisor/cadvisor:latest

<컨테이너 활성화>

docker    run    \\
--restart=always    \\
--volume=/:/rootfs:ro    \\
--volume=/var/run:/var/run:rw    \\
--volume=/sys/fs/cgroup:/sys/fs/cgroup:ro    \\
--volume=/var/lib/docker/:/var/lib/docker:ro    \\
--volume=/dev/disk/:/dev/disk:ro    \\
--publish=9559:8080    \\
--detach=true    \\
--name=cadvisor    \\
--privileged    \\
--device=/dev/kmsg    \\
gcr.io/cadvisor/cadvisor:latest

<포트 9559로 접속해 확인>

5. docker container logs: 로그 기록 확인

  • mysql:5.7-debian 컨테이너를 대상으로 로그 확인
ubuntu@host1:~$ docker container logs mydb

<로그 기록 확인 가능>

  • docker container logs -f: 로그를 출력하고 프로세스를 종료하는 것이 아니라 계속해서 로그를 추적
ubuntu@host1:~$ docker container logs -f noderun
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.

 

<컨테이너 변경 사항 확인>

  • docker container diff (컨테이너 이름)<레이어 상세 정보 확인>