도커 컨테이너와 이미지 관리하기

dong5854·2022년 2월 10일
0

docker

목록 보기
4/8
post-thumbnail

이미지와 컨테이너 삭제하기

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
profile
https://github.com/dong5854?tab=repositories

0개의 댓글