1. 컨테이너와 호스트 간의 file 전송 명령어

  • docker cp <container name>:<path> <host경로> 또는 docker cp <host경로> <container name>:<path> 명령어로 사용

    # 실행할 이미지 확인
    $ docker images
    REPOSITORY              TAG       IMAGE ID                   CREATED          SIZE
    test                           vol         b00a026e35cd       51 minutes ago   133MB
    locahost:5000/vol       v1          b00a026e35cd      51 minutes ago   133MB
    localhost:5000/vol      v1          b00a026e35cd      51 minutes ago   133MB
    test                           user       0e7f2d0690f8        2 hours ago        73.1MB
    ubuntu                      latest      1318b700e415      5 hours ago        72.8MB
    forestian/test             web        d19fbcd7480b       18 hours ago      133MB
    nginx                        latest      08b152afcfae        4 days ago          133MB
    registry                     latest      1fd8e1b0bb7e       3 months ago      26.2MB
    
    # 테스트 켄터이너 실행
    $ docker run --rm -d -it test:vol /bin/bash
    
    # 실행하는 컨테이너 확인
    $ docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS             PORTS        NAMES
    df8bc7355db0   test:vol   "/docker-entrypoint.…"   3 minutes ago    Up 3 minutes    80/tcp        wonderful_burnell
    
    # 해당 명령어의 파일 없음
    $ docker exec -it df8 ls /bin/ip
    Error: No such container: test:vol
    
    # web 이름을 가진 컨테이너에 host가 가지고 있는 /usr/sbin/ip 파일을 /bin/디렉토리 아래에 복사
    $ docker cp /usr/sbin/ip df8:/bin/
    
    # 해당 명령어의 파일이 정상적으로 복사됨 확인
    $ docker exec -it df8 ls /bin/ip
    /bin/ip

2. 변경된 컨테이너 file 조회

  • docker diff <container name> 명령어로 사용
  • 이미지와 Container를 비교하여 변경된 파일 목록 출력
    1. A → add
    2. C → change
    3. D → delete
  • 변경된 컨테이너 file 조회 예시

    $ docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED           STATUS            PORTS       NAMES
    df8bc7355db0   test:vol   "/docker-entrypoint.…"   6 minutes ago    Up 6 minutes    80/tcp       wonderful_burnell
    
    $ docker diff df8
    C /bin
    A /bin/ip

3. 변경된 컨테이너 이미지 생성 → 백업 이미지 생성

  • docker commit <options> <container name> <image>:<tag> 명령어로 사용
  • docker commit 명령어 사용 옵션
    1. -a 옵션 → 만든이
    2. -m 옵션 → log 메시지
  • 변경된 컨테이너 이미지 생성 예시

    # 변경된 내용을 가지는 이미지 생성
    $ docker commit -a "hippo" -m "add /bin/ip" df8b nginx:ip
    sha256:96ec98bcb7ac7344d8c36a01601f3ffb202f50a5bfcca6cae21c7624abfc5b64
    
    # 생성된 이미지 확인
    $ docker images
    REPOSITORY              TAG       IMAGE ID                   CREATED          SIZE
    test                           vol         b00a026e35cd       51 minutes ago   133MB
    locahost:5000/vol       v1          b00a026e35cd      51 minutes ago   133MB
    localhost:5000/vol      v1          b00a026e35cd      51 minutes ago   133MB
    test                           user       0e7f2d0690f8        2 hours ago        73.1MB
    ubuntu                      latest      1318b700e415      5 hours ago        72.8MB
    forestian/test             web        d19fbcd7480b       18 hours ago      133MB
    nginx                        latest      08b152afcfae        4 days ago          133MB
    registry                     latest      1fd8e1b0bb7e       3 months ago      26.2MB
    
    # 생성된 이미지를 컨테이너 실행
    $ docker run -d -it --name webip nginx:ip
    2b2f20c81ea677e33e3cda36e6ef8ad21e2dd95dbc69a5b91dcbe6ba9a6851ad
    
    # 실행중인 컨테이너 확인
    $ docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED           STATUS              PORTS      NAMES
    2b2f20c81ea6   nginx:ip   "/docker-entrypoint.…"   27 seconds ago   Up 26 seconds   80/tcp       webip
    
    # 추가된 부분에 대한 테스트로 정상적으로 이미지 생성 확인
    $ docker exec webip ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
        link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
           valid_lft forever preferred_lft forever

4. 컨테이너 상세 정보 조회 → docker inspect <컨테이너 이름>

  • docker inspect <container name> 명령어로 사용

    # 실행중인 컨테이너 확인
    $ docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED           STATUS          PORTS           NAMES
    2b2f20c81ea6   nginx:ip   "/docker-entrypoint.…"   2 minutes ago    Up 2 minutes    80/tcp         webip
    
    # 컨테이너의 자세한 내용 조회
    $ docker inspect 2b2 | less
    [
        {
            "Id": "2b2f20c81ea677e33e3cda36e6ef8ad21e2dd95dbc69a5b91dcbe6ba9a6851ad",
            "Created": "2021-07-27T02:31:18.37452262Z",
            "Path": "/docker-entrypoint.sh",
            "Args": [
                "/bin/bash"
            ],
            <...중략...>
                        "IPPrefixLen": 16,
                        "IPv6Gateway": "",
                        "GlobalIPv6Address": "",
                        "GlobalIPv6PrefixLen": 0,
                        "MacAddress": "02:42:ac:11:00:04",
                        "DriverOpts": null
                    }
                }
            }
        }
    ]

5. 네트워크 상세 정보 조회 → docker network inspect <네트워크 이름>

  • docker network inspect <network name> 명령어로 사용

  • docker network ls 명령어로 네트워크 확인 가능

    # 네트워크 리스트 확인
    $ docker network ls
    NETWORK ID     NAME      DRIVER    SCOPE
    855a8e7a6afa    bridge     bridge      local
    dcbe9811b35f    host        host         local
    2143943ba6b0   none       null          local
    
    # brige 이름을 가진 네트워크 상세 정보 확인
    $ docker network inspect bridge
    [
        {
            "Name": "bridge",
            "Id": "855a8e7a6afa6fba6dc9344910adf12d42ebdffd23a6cc19b1e44ce7f1385cf3",
            "Created": "2021-07-27T10:19:48.519226416+09:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": [
                    {
                        "Subnet": "172.17.0.0/16",
                        "Gateway": "172.17.0.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {
                "2b2f20c81ea677e33e3cda36e6ef8ad21e2dd95dbc69a5b91dcbe6ba9a6851ad": {
                    "Name": "webip",
                    "EndpointID": "3e0b976ea7976bcaba633304fb487a5417ed892999ba4163887f11477860fb5f",
                    "MacAddress": "02:42:ac:11:00:04",
                    "IPv4Address": "172.17.0.4/16",
                    "IPv6Address": ""
                },
                "d5a02a85daeeb88cb470108f2be7364ee7210d6ea65935baee15579bf25fee63": {
                    "Name": "registry-server",
                    "EndpointID": "9f73284ba8e4e6a799df75c19387fda9d896648ef8c53ec51604066318a54b45",
                    "MacAddress": "02:42:ac:11:00:02",
                    "IPv4Address": "172.17.0.2/16",
                    "IPv6Address": ""
                },
                "df8bc7355db091a33c9b8daa4c28163aeb5a06eba4ff90681c0a7820aa1355f2": {
                    "Name": "wonderful_burnell",
                    "EndpointID": "32bce18ca81d104ca7dc444d56a9094eda69fcd442899e30ea04d03353d06859",
                    "MacAddress": "02:42:ac:11:00:03",
                    "IPv4Address": "172.17.0.3/16",
                    "IPv6Address": ""
                }
            },
            "Options": {
                "com.docker.network.bridge.default_bridge": "true",
                "com.docker.network.bridge.enable_icc": "true",
                "com.docker.network.bridge.enable_ip_masquerade": "true",
                "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
                "com.docker.network.bridge.name": "docker0",
                "com.docker.network.driver.mtu": "1500"
            },
            "Labels": {}
        }
    ]
    
    # host 이름을 가진 네트워크 상세 정보 확인
    $ docker network inspect host
    [
        {
            "Name": "host",
            "Id": "dcbe9811b35f5574ebd65b5118d04831440ac6f992ecba14d0881db4f43d64e1",
            "Created": "2021-07-26T13:41:54.007292134+09:00",
            "Scope": "local",
            "Driver": "host",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": []
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]
    
    # none 이름을 가진 네트워크 상세 정보 확인
    $ docker network inspect none
    [
        {
            "Name": "none",
            "Id": "2143943ba6b0a74a5ef724d5af13b30e0492ce4489bcd1c3d561741040f86514",
            "Created": "2021-07-26T13:41:53.953813947+09:00",
            "Scope": "local",
            "Driver": "null",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": []
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]

6. 이미지 상세 정보 조회 → docker image inspect <이미지 이름>

  • docker image inspect <image name> 명령어로 사용

  • docker image ls 명령어로 이미지 확인 가능

    # 이미지 리스트 확인
    $ docker image ls
    REPOSITORY              TAG       IMAGE ID                   CREATED          SIZE
    test                           vol         b00a026e35cd       51 minutes ago   133MB
    locahost:5000/vol       v1          b00a026e35cd      51 minutes ago   133MB
    localhost:5000/vol      v1          b00a026e35cd      51 minutes ago   133MB
    test                           user       0e7f2d0690f8        2 hours ago        73.1MB
    ubuntu                      latest      1318b700e415      5 hours ago        72.8MB
    forestian/test             web        d19fbcd7480b       18 hours ago      133MB
    nginx                        latest      08b152afcfae        4 days ago          133MB
    registry                     latest      1fd8e1b0bb7e       3 months ago      26.2MB
    
    # nginx:ip 이름을 가진 이미지의 상세 정보 확인
    $ docker image inspect nginx:ip
    [
        {
            "Id": "sha256:96ec98bcb7ac7344d8c36a01601f3ffb202f50a5bfcca6cae21c7624abfc5b64",
            "RepoTags": [
                "nginx:ip"
            ],
            "RepoDigests": [],
            "Parent": "sha256:b00a026e35cdc01c6ea323dc364d0f091897afb9acb70e8404804dfdfeed98a9",
            "Comment": "add /bin/ip",
            <...중략...>
            "RootFS": {
                "Type": "layers",
                "Layers": [
                    "sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4",
                    "sha256:7c0b223167b96d7deaacf1e1d2d35892166645b09b17bcc8675a4d882ef84893",
                    "sha256:59b01b87c9e7f668b740d23eb872c5964636c33aef795f1186f08b172197bc35",
                    "sha256:988d9a3509bbb7ea8037d4eba3a5e0ada5dc165144c8ff0df89c0048d1ac6132",
                    "sha256:b857347059916922b353147882544f17bb96e64c639081c0677bf386c446be4f",
                    "sha256:e3135447ca3e69c6975aee1621c406e3865e0e143c807bbdcf05abefa56054a2",
                    "sha256:cbf5cd72e52c438d7b56ef2e4ecec55c7086194447ee3e841c1f0f3cf2d1d57a"
                ]
            },
            "Metadata": {
                "LastTagTime": "2021-07-27T11:27:55.465105417+09:00"
            }
        }
    ]

7. 볼륨 상세 정보 조회 → docker volume inspect <볼륨 이름>

  • docker volume inspect <volume name> 명령어로 사용

  • docker volume create disk → 볼륨 생성

  • docker volume ls 명령어로 볼륨 확인 가능

    # disk1 이름을 가진 volume 생성
    $ docker volume create disk1
    disk1
    
    # 생성된 volume 확인
    $ docker volume ls
    DRIVER    VOLUME NAME
    local         6a78c5df00f787b72e00cc634b8f79ac7679ac1d60985618f59ec8d3cbf96cae
    local         25b16fde993167ac0e3457c7492cbde6e4c0c2cecce9292db248586b2b0c3f55
    local         disk1
    local         e343d977a0e3802e449a20f60f8f9502af45f1324b220cbb33bafea06fa65918
    
    # disk1 이름을 가진 volume의 자센한 내용 확인
    $ docker volume inspect disk1
    [
        {
            "CreatedAt": "2021-07-27T13:08:35+09:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/disk1/_data",
            "Name": "disk1",
            "Options": {},
            "Scope": "local"
        }
    ]

8. 실시간 events 출력

  • docke events 명령어로 사용

9. container의 로그 확인

  • docke logs <container name> 명령어로 사용
  • --since 옵션을 주면 해당 일 이후 로그 출력
  • 실시간 events 출력

10. container의 filesystem을 tar로 저장

  • docker export <container name> <tar file> 명령어로 사용

11. 이미지를 tar파일 형태로 백업 저장 → docker save image > xxx.tar

  • docke save <image name> > xxx.tar 명령어로 사용

12. 기존 이미지 name으로 restore

  • docke load < xxx.tar 명령어로 사용

13. container의 프로세스 모니터링

  • docker top <contianer name> <option> 명령어로 사용

14. container 단위로 사용량 확인

  • docker status 명령어로 사용

    # 전체 컨테이너의 사용량 확인
    $ docker status
    
    # 특정 컨터이너의 사용량 확인 -> 컨테이너 확인
    $ docker ps
    
    $ docker status

15. volume 사용량 확인

  • docker system df 명령어로 사용
    $ docker system df

16. docker system prune <option> 명령어 사용

  • docker system prune → stop 되어있는 container를 제거

  • docker system prune -a → 컨테이너에서 사용하고 있지 않는 이미지를 모두 제거

    $ docker system prune
    
    $ docker system df
    
    $ docker system prune -a
    
    $ docker system df

+ Recent posts