도커 컨테이너를 삭제한다.
docker rm <컨테이너>
중지된 모든 컨테이너를 삭제한다.
docker container prune
도커 이미지를 삭제한다.
docker rmi <이미지>
사용중이 아니고 태그가 존재하지 않는 모든 이미지를 삭제한다. 태그가 존재하는 이미지도 삭제하려면 뒤에 -a 옵션을 붙여준다.
docker image prune
이미지를 삭제 할 때, 해당 이미지를 포함하고 있는 컨테이너가 존재한다면 컨테이너의 실행 유무와 상관없이 삭제가 불가능하다.
docker run 명령어를 통해 도커를 실행할 때에는 --rm 옵션을 주어 컨테이너가 멈추면 자동으로 삭제가 되도록 할 수 있다. 이 옵션은 컨테이너를 멈추고 코드를 수정한 후 다시 컨테이너를 빌드해 주어야 하는 종류의 작업을 할 때 유용하다.
docker run --name client --rm -d -p 8080:80 sebcontents/client
도커 이미지에 대한 자세히 살펴보고 싶다면 docker image inspect <이미지> 명령어를 통해 이를 살펴볼 수 있다.
docker image inspect a10f304effcf
[
{
"Id": "sha256:a10f304effcf4536ea01bba62621179645345b5bc700610746cb26afee28132a",
"RepoTags": [
"feedback-node:dev"
],
"RepoDigests": [],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2023-04-11T16:14:38.608980225Z",
"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": {
"8000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=19.8.1",
"YARN_VERSION=1.22.19",
"PORT=8000"
],
"Cmd": [
"npm",
"start"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1010977087,
"VirtualSize": 1010977087,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/i5fq39f2m4w2h6w5g3nf9076w/diff:/var/lib/docker/overlay2/6pwfi747bbjmkrnkk2d06xidn/diff:/var/lib/docker/overlay2/5jp2vx9hsgpmfexfavgqyh8z7/diff:/var/lib/docker/overlay2/10dae99d0da58fb1c2eb966512d276e815e0fb5874946fc9a481caf3a4bcfeb7/diff:/var/lib/docker/overlay2/ef8dc2e5e02a3d91e2068a460c5ae9dfc1c4f9a6654c9e9653d2b1fc5d0bcaa4/diff:/var/lib/docker/overlay2/2030cb1ceb7c0fee62b67d8cc2a19d699470f0f82863899630ee5590b8a147f2/diff:/var/lib/docker/overlay2/8b78bc1810077f7349de46506d4981559a5294026ae343508b6f99fc40ca6563/diff:/var/lib/docker/overlay2/43340b6997d9c466865a67c72c1ee769b49957a9ec84287c6d5154044ff419cb/diff:/var/lib/docker/overlay2/5fb01435c1a8accae60f7dc58e720e93163a54347fe156f9a00ce23f9dd76213/diff:/var/lib/docker/overlay2/e457936d20bc3fad67776dfaa5ea737626c7d87ebb7c18c10818dac715823db2/diff:/var/lib/docker/overlay2/33784312efa3eeef392c0fa8e47bcdca2b0a0d8dd704800eaa80af2c717493e7/diff:/var/lib/docker/overlay2/57377088239a9db0ce907181968e6240e370910da447efa897f871978f73ae68/diff",
"MergedDir": "/var/lib/docker/overlay2/v8rn8cakvetmqht10dn8boii0/merged",
"UpperDir": "/var/lib/docker/overlay2/v8rn8cakvetmqht10dn8boii0/diff",
"WorkDir": "/var/lib/docker/overlay2/v8rn8cakvetmqht10dn8boii0/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:ec09eb83ea031896df916feb3a61cefba9facf449c8a55d88667927538dca2b4",
"sha256:053a1f71007ec7293dceb3f229446da4c36bad0d27116ab5324e1c7b61071eae",
"sha256:a90e3914fb92b189ed9bbe543c4e4cc5be5bd3e7d221ef585405dd35b3e4db43",
"sha256:5ab567b9150b948de4708a880cad7026665e7e0a227dea526cc3839eca4b2515",
"sha256:d4514f8b2aac13e66dfc8b6e15aa2feb0d4ff942a192d9481f09b45e681ceb40",
"sha256:7efd70d0bc369b94d8c5810e20609c9e4eadc0fdaa4deabc6df52174c73104a6",
"sha256:bf55b14248a70f89f31efca6dbcb1de3b4376c82d1c5906f754060bd4f18f390",
"sha256:d25cfc53cd3feda742c04ecc7b07e26a8ec1769f572bf05c218edfa2d4910349",
"sha256:a229f6e7a6155e80a80ee2d3615fe482bd85adfe4f090e152e4d296ef81ffc6d",
"sha256:4f8487a50a113ebff84d13c007dce271d6305816b9b099b959dd33669f84f152",
"sha256:f1ebef12b48793407461abd729ca2844c64b466f14da09d4e5bfeb17d4499c7b",
"sha256:23e0c4a511f4087608e513f2f0ea7e99bd0b0739bfa2f22130974ce1db90e9fc",
"sha256:b6bd2b72b3a21ea8e877451eaf7a38e4dcdc787f237ebbe0e02fcdc7cfeccaae"
]
},
"Metadata": {
"LastTagTime": "2023-04-11T16:14:38.95737024Z"
}
}
]
docker cp <파일경로> <컨테이너:컨테이너 내부의 경로>를 통해 로컬 환경의 파일을 컨테이너 내부로 넣을 수 있고 이와 반대로 docker cp <컨테이너:컨테이너 내부의 경로> <파일경로>를 통해 도커 내부의 파일을 로컬 환경으로 가져올 수 있다. 이 명령어는 컨테이너 내부로 설정 파일을 변경해 넣거나, 컨테이너 내부의 로그를 꺼낼 때 유용하게 사용될 수 있다.
docker cp ./ part1:/usr/local/apache2/htdocs/
docker run에서 --name 옵션을 통해 컨테이너에 이미지를 줄 수 있다. 혹은 컨테이너의 이름은 바꿔주고 싶다면 다음을 통해 바꿔줄 수 있다.
docker rename <에전 이름> <새 이름>
도커에서 이미지는 tag라는 이름으로 존재하는데 tag는 크게 name:tag로 콜른을 통해 2가지 부분로 나뉜다. name은 repository라고도 불리며 일반적으로 생각하는 이름을 나타내고, tag는 이미지의 특정한 버전을 나타내는데 사용된다.
docker image tag <이름을 바꿀 이미지> <원하는 이미지명>
존재하는 이미지의 이름을 바꿀 수 있고, dockerfile을 통해 build 할 때에는 -t 옵션을 이용해 이름을 지정해줄 수 있다.