docker rm <컨테이너>
: 도커 컨테이너를 삭제한다.
docker container prune
: 중지된 모든 컨테이너를 삭제한다.
docker rmi <이미지>
: 도커 이미지를 삭제한다.
docker image prune
: 사용중이 아니고 태그가 존재하지 않는 모든 이미지를 삭제한다. 태그가 존재하는 이미지도 삭제하려면 뒤에 -a
옵션을 붙여준다.
이미지를 삭제 할 때, 해당 이미지를 포함하고 있는 컨테이너가 존재한다면 컨테이너의 실행 유무와 상관없이 삭제가 불가능하다.
docker run
명령어를 통해 도커를 실행할 때에는 --rm
옵션을 주어 컨테이너가 멈추면 자동으로 삭제가 되도록 할 수 있다. 이 옵션은 컨테이너를 멈추고 코드를 수정한 후 다시 컨테이너를 빌드해 주어야 하는 종류의 작업을 할 때 유용하다.
dong@ubuntu:~/docker-complete$ sudo docker run --help | grep rm
--platform string Set platform if server is multi-platform capable
--rm Automatically remove the container when it exits
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
도커 이미지에 대한 자세히 살펴보고 싶다면 docker image <이미지>
명령어를 통해 이를 살펴볼 수 있다.
dong@ubuntu:~/docker-complete$ sudo docker image inspect b2da75518bad
[
{
"Id": "sha256:b2da75518badc2a4b3887425682dc4109ff05e2d03ac06c14b129d9563e5b8eb",
"RepoTags": [],
"RepoDigests": [],
"Parent": "sha256:7729bcd1c7515101dfcfa159cf34bea787339d06a8f7ce2296d928c889217287",
"Comment": "",
"Created": "2022-01-25T17:57:15.507898747Z",
"Container": "5ec3ce58cb2f5f7f185566e883850f778708367eaeed536191c1a27dbfda4e78",
"ContainerConfig": {
"Hostname": "5ec3ce58cb2f",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=17.4.0",
"YARN_VERSION=1.22.17"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"node\" \"server.js\"]"
],
"Image": "sha256:7729bcd1c7515101dfcfa159cf34bea787339d06a8f7ce2296d928c889217287",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "20.10.12",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=17.4.0",
"YARN_VERSION=1.22.17"
],
"Cmd": [
"node",
"server.js"
],
"Image": "sha256:7729bcd1c7515101dfcfa159cf34bea787339d06a8f7ce2296d928c889217287",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 998023077,
"VirtualSize": 998023077,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/309e118875da527b1578279a4db79c37b7d825d7e04c7eb10faab8c9cd163a40/diff:/var/lib/docker/overlay2/02753cf575202cd742c44d1426018ccde80376ab876583abd017c8604e448ea1/diff:/var/lib/docker/overlay2/3a66bcf075de99f4a88f79a9748b6581020d9fcea63a9809caceae57539e15d6/diff:/var/lib/docker/overlay2/278ac52ad990a6430c01665c4e1202ad62f4fe1d46cb42d596633f11736d388c/diff:/var/lib/docker/overlay2/a55abc1339531c90ab3aefcb49f8a94875ad4b6d767aa682a4cd1cdbceedaa44/diff:/var/lib/docker/overlay2/e66ccee1c606d6d64048b34baa99b935ba2a24f7e001101c1817ff9e595ae0d1/diff:/var/lib/docker/overlay2/5fdf3e9ad9d496c0757cd04e51db9ca02539144ab18308dffaecf4efbdc9943e/diff:/var/lib/docker/overlay2/f1dd904fb3bac2e88159f892238bafb78d2e5bf3522645d67870f5cba6dd9a55/diff:/var/lib/docker/overlay2/94831aa1789528410c84737b03bb5d72cd7038b37bc34df19048ce028c8d3212/diff:/var/lib/docker/overlay2/ac7412c64c7c0f1dbf99f12fc699e987ec8779b618ab281d73ff309f271b66c3/diff:/var/lib/docker/overlay2/835a33abddc55760e82e514e4f7438ab95c3c967b488ba14fa300b86e2fd2259/diff",
"MergedDir": "/var/lib/docker/overlay2/66793e5382dac7ad9f87fb733993eda4e0780187f75fecd28d3ecdb60ac44619/merged",
"UpperDir": "/var/lib/docker/overlay2/66793e5382dac7ad9f87fb733993eda4e0780187f75fecd28d3ecdb60ac44619/diff",
"WorkDir": "/var/lib/docker/overlay2/66793e5382dac7ad9f87fb733993eda4e0780187f75fecd28d3ecdb60ac44619/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:11936051f93baf5a4fb090a8fa0999309b8173556f7826598e235e8a82127bce",
"sha256:31892cc314cb1993ba1b8eb5f3002c4e9f099a9237af0d03d1893c6fcc559aab",
"sha256:8bf42db0de72f74f4ef0c1d1743f5d54efc3491ee38f4af6d914a6032148b78e",
"sha256:26a504e63be4c63395f216d70b1b8af52263a5289908df8e96a0e7c840813adc",
"sha256:c3a0d593ed24e738aec3b1e61662f696311ae99941c45c78d281ebc3732bdcb0",
"sha256:d7df527ad243895ee763c640c1b8d70e19be58405c572e66c4fdecadbe51c21f",
"sha256:766914ffba756154625c3eb1877cf57923fa141f819ff93f51f4eeb5ba416239",
"sha256:ee106cd181506ac1d6b0a2d2f69face203817805dc26e537272d2ab558eec693",
"sha256:eeaba1b398f80e088116341b03e3d21b139cda4aa4fbd442b0e5169a22876d74",
"sha256:fdf28dd35ca3edef88023e507bef10846d5721713ced40c11a7dbf687958f9f7",
"sha256:34ce0cf85a89902f6ca45d9dd76712cd29b64af4dbad2baa69fb9d6fb2fc8e0b",
"sha256:5443536199739aef5b6f08a2e541c2cbef8a9221163649f8defdb10b74f5b5d3"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
docker cp <파일경로> <컨테이너:컨테이너 내부의 경로>
를 통해 로컬 환경의 파일을 컨테이너 내부로 넣을 수 있고 이와 반대로 docker cp <컨테이너:컨테이너 내부의 경로> <파일경로>
를 통해 도커 내부의 파일을 로컬 환경으로 가져올 수 있다. 이 명령어는 컨테이너 내부로 설정 파일을 변경해 넣거나, 컨테이너 내부의 로그를 꺼낼 때 유용하게 사용될 수 있다.
docker run
에서 --name
옵션을 통해 컨테이너에 이미지를 줄 수 있다. 혹은 컨테이너의 이름은 바꿔주고 싶다면
docker rename <에전 이름> <새 이름>
을 통해 바꿔줄 수 있다.
dong@ubuntu:~/docker-complete$ sudo docker run --help | grep name
--cgroupns string Cgroup namespace to use (host|private)
'host': Run the container in the Docker host's cgroup namespace
'private': Run the container in its own private cgroup namespace
'': Use the cgroup namespace as configured by the
--domainname string Container NIS domain name
-h, --hostname string Container host name
--name string Assign a name to the container
--pid string PID namespace to use
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
--userns string User namespace to use
--uts string UTS namespace to use
도커에서 이미지는 tag라는 이름으로 존재하는데 tag는 크게 name:tag
로 콜른을 통해 2가지 부분로 나뉜다. name은 repository라고도 불리며 일반적으로 생각하는 이름을 나타내고, tag는 이미지의 특정한 버전을 나타내는데 사용된다.
docker image tag <이름을 바꿀 이미지> <원하는 이미지명>
존재하는 이미지의 이름을 바꿀 수 있고, dockerfile을 통해 build 할 때에는 -t
옵션을 이용해 이름을 지정해줄 수 있다.
dong@ubuntu:~/docker-complete$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> d73c8a65c249 7 days ago 886MB
python latest e2e732b7951f 12 days ago 886MB
mysql latest d1dc36cf8d9e 2 weeks ago 519MB
<none> <none> b2da75518bad 2 weeks ago 998MB
<none> <none> 31bc868478b8 2 weeks ago 998MB
name latest 989df459e007 2 weeks ago 948MB
node latest 1dbd1eb1b352 3 weeks ago 993MB
dong@ubuntu:~/docker-complete$ sudo docker image tag 989df459e007 spiderman:nowayhome
dong@ubuntu:~/docker-complete$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> d73c8a65c249 7 days ago 886MB
python latest e2e732b7951f 12 days ago 886MB
mysql latest d1dc36cf8d9e 2 weeks ago 519MB
<none> <none> b2da75518bad 2 weeks ago 998MB
<none> <none> 31bc868478b8 2 weeks ago 998MB
name latest 989df459e007 2 weeks ago 948MB
spiderman nowayhome 989df459e007 2 weeks ago 948MB
node latest 1dbd1eb1b352 3 weeks ago 993MB