docker image 명령어 목록
technote@TechNote:~$ docker image --help
Usage: docker image COMMAND
Manage images
Commands:
build Build an image from a Dockerfile
history Show the history of an image
import Import the contents from a tarball to create a filesystem image
inspect Display detailed information on one or more images
load Load an image from a tar archive or STDIN
ls List images
prune Remove unused images
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rm Remove one or more images
save Save one or more images to a tar archive (streamed to STDOUT by default)
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
Run 'docker image COMMAND --help' for more information on a command.
Docker 이미지 빌드 :
Dockerfile을 기반으로 docker 이미지를 빌드한다.
$ docker image build -t "Image 이름" "Dockerfile 경로"
technote@TechNote:~/docker$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
technote@TechNote:~/docker$ docker image build -t my-test-app .
Sending build context to Docker daemon 3.072kB
Step 1/3 : FROM python:3
3: Pulling from library/python
0ecb575e629c: Pull complete
7467d1831b69: Pull complete
feab2c490a3c: Pull complete
f15a0f46f8c3: Pull complete
937782447ff6: Pull complete
e78b7aaaab2c: Pull complete
06c4d8634a1a: Pull complete
42b6aa65d161: Pull complete
f7fc0748308d: Pull complete
Digest: sha256:ca8bd3c91af8b12c2d042ade99f7c8f578a9f80a0dbbd12ed261eeba96dd632f
Status: Downloaded newer image for python:3
---> 2a93c239d591
Step 2/3 : COPY main.py ./
---> 77da3887c4b1
Step 3/3 : CMD ["python3", "./main.py"]
---> Running in d3cc2e0c5522
Removing intermediate container d3cc2e0c5522
---> ca344f358767
Successfully built ca344f358767
Successfully tagged my-test-app:latest
technote@TechNote:~/docker$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my-test-app latest ca344f358767 54 seconds ago 885MB
python 3 2a93c239d591 6 days ago 885MB
새로운 docker image 가 생성된 것을 확인할 수 있다.
[Docker 이미지 빌드시 사용된 Dockerfile]
FROM python:3
COPY main.py ./
CMD ["python3", "./main.py"]
새로 생성된 이미지가 공식 python 3 이미지를 기반으로 하기에 python 이미지 또한 다운로드되어 있는 것을 알 수 있다.
Docker 이미지 이력 확인 :
Docker 이미지의 생성 이력을 확인한다.
$ docker image build -t "Image 이름" "Dockerfile 경로"
technote@TechNote:~/docker$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my-test-app latest ca344f358767 2 minutes ago 885MB
python 3 2a93c239d591 6 days ago 885MB
technote@TechNote:~/docker$ docker image history my-test-app
IMAGE CREATED CREATED BY SIZE COMMENT
ca344f358767 2 minutes ago /bin/sh -c #(nop) CMD ["python3" "./main.py… 0B
77da3887c4b1 2 minutes ago /bin/sh -c #(nop) COPY file:05e1e101e1853515… 21B
2a93c239d591 6 days ago /bin/sh -c #(nop) CMD ["python3"] 0B
<missing> 6 days ago /bin/sh -c set -ex; wget -O get-pip.py "$P… 8.01MB
<missing> 6 days ago /bin/sh -c #(nop) ENV PYTHON_GET_PIP_SHA256… 0B
<missing> 6 days ago /bin/sh -c #(nop) ENV PYTHON_GET_PIP_URL=ht… 0B
<missing> 6 days ago /bin/sh -c #(nop) ENV PYTHON_PIP_VERSION=21… 0B
<missing> 6 days ago /bin/sh -c cd /usr/local/bin && ln -s idle3… 32B
<missing> 6 days ago /bin/sh -c set -ex && wget -O python.tar.x… 55.7MB
<missing> 6 days ago /bin/sh -c #(nop) ENV PYTHON_VERSION=3.9.1 0B
<missing> 6 days ago /bin/sh -c #(nop) ENV GPG_KEY=E3FF2839C048B… 0B
<missing> 6 days ago /bin/sh -c apt-get update && apt-get install… 18MB
<missing> 6 days ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0B
<missing> 6 days ago /bin/sh -c #(nop) ENV PATH=/usr/local/bin:/… 0B
<missing> 7 days ago /bin/sh -c set -ex; apt-get update; apt-ge… 510MB
<missing> 7 days ago /bin/sh -c apt-get update && apt-get install… 146MB
<missing> 7 days ago /bin/sh -c set -ex; if ! command -v gpg > /… 17.5MB
<missing> 7 days ago /bin/sh -c set -eux; apt-get update; apt-g… 16.5MB
<missing> 7 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 7 days ago /bin/sh -c #(nop) ADD file:8f75f11b2bd2d50e5… 114MB
Docker 이미지 목록 확인 :
Docker 이미지 목록을 확인한다.
$ docker image ls
$ docker image ls -a
technote@TechNote:~/docker$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my-test-app latest ca344f358767 4 minutes ago 885MB
python 3 2a93c239d591 6 days ago 885MB
technote@TechNote:~/docker$ docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
my-test-app latest ca344f358767 4 minutes ago 885MB
<none> <none> 77da3887c4b1 4 minutes ago 885MB
python 3 2a93c239d591 6 days ago 885MB
-a 옵션 : Show all images (default hides intermediate images)
Docker images have intermediate layers that increase reusability, decrease disk usage, and speed up docker build by allowing each step to be cached. These intermediate layers are not shown by default.
Docker image는 cache 와 같은 역할을 하는 intermediate layer 를 가지고 있다. (intermediate image)
기본적으로 ls 시에는 보이지 않고, -a 옵션을 했을 때만 보인다.
docker image history 시 최종 image 생성전 중간에 intermediate image 가 생기는 것을 Image ID를 통해 확인할 수 있다.
Docker dangling 이미지 전체 삭제:
Docker 사용 중 발생할 수 있는 dangling 이미지 전체를 삭제한다.
$ docker image prune
technote@TechNote:~/docker$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
Docker 이미지 삭제 :
Docker 이미지를 삭제한다.
$ docker image rm "Image 이름:[태그]"
technote@TechNote:~/docker$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my-test-app latest ca344f358767 7 minutes ago 885MB
python 3 2a93c239d591 6 days ago 885MB
technote@TechNote:~/docker$ docker image rm my-test-app:latest
Untagged: my-test-app:latest
Deleted: sha256:ca344f358767bed3419c9b9c8ce2f8bb5b115d13b10b536bef8222561c6614cf
Deleted: sha256:77da3887c4b19340a4601cd55d46c74f00611036e18968eddcad176feabc4b1f
Deleted: sha256:3d07b1cb1ba54ae2785be9298208ddcd013358fd3fc1cee403e5ece168aaf0dc
technote@TechNote:~/docker$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3 2a93c239d591 6 days ago 885MB