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를 비교하여 변경된 파일 목록 출력
- A → add
- C → change
- 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 명령어 사용 옵션
- -a 옵션 → 만든이
- -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
'Container Runtime > docker(도커)' 카테고리의 다른 글
Docker 실행 환경 확인 → docker system info (0) | 2022.08.08 |
---|---|
Docker 버전 확인 → docker version 명령어 (0) | 2022.08.08 |
docker image 조회(https://hub.docker.com 접속 또는 command 활용) 및 다운로드, 삭제 (0) | 2022.08.07 |
docker 명령어 root 이외 사용할 수 있도록 docker 그룹 포함 (0) | 2022.08.07 |
docker 설치 (0) | 2022.08.07 |