✔️ Docker 관리
✔️ 최신 Docker 명령 구조
docker container <sub-command>
docker image <sub-command>
docker network <sub-command>
docker volume <sub-command>
✔️ 이미지
✔️ 이미지 목록 확인
로컬 레지스트리의 이미지 목록을 확인한다.
docker images
docker image ls
vagrant@docker ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d2e4e1f51132 4 days ago 77.8MB
amazonlinux latest 365842604a8b 12 days ago 164MB
httpd latest c30a46771695 13 days ago 144MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos 7 eeb6ee3f44bd 7 months ago 204MB
✔️Dockerhub 이미지 검색
docker search <TERM>
vagrant@docker ~ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 14170 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 283 [OK]
ubuntu-upstart DEPRECATED, as is Upstart (find other proces… 112 [OK]
도커 허브에서 원하는 이미지를 검색할 수 있다.
검색한 이미지 리스트와 간단한 설명, 별점, 공식 이미지 여부, AUTOMATED(자동화 구성)으로 만들어진 이미지인지 표시한다.
✔️ 이미지 풀링
docker pull <IMAGE>:<TAG>
docker pull <IMAGE>@<HASH>
docker pull centos
tag를 지정하지 않으면 Using default tag, 즉 centos의 latest 태그를 받아온다.
vagrant@docker ~ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
vagrant@docker ~ docker pull centos:centos7
centos7: Pulling from library/centos
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:centos7
docker.io/library/centos:centos7
먼저 centos 이미지를 태그 없이 다운받은 후 :centos7 이라는 태그를 붙인 centos 이미지를 다운 받아보자
centos:centos7 이미지를 다시 다운 받지 않는 것을 통해 두 이미지가 같은 이미지임을 확인할 수 있다.
pull 명령을 이용해 4개의 이미지를 다운받는다.
vagrant@docker ~ docker image pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
vagrant@docker ~ docker image pull centos:centos7
centos7: Pulling from library/centos
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:centos7
docker.io/library/centos:centos7
vagrant@docker ~ docker image pull centos:centos7.9.2009
centos7.9.2009: Pulling from library/centos
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:centos7.9.2009
docker.io/library/centos:centos7.9.2009
vagrant@docker ~ docker image pull centos:7.9.2009
7.9.2009: Pulling from library/centos
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:7.9.2009
docker.io/library/centos:7.9.2009
vagrant@docker ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d2e4e1f51132 4 days ago 77.8MB
amazonlinux latest 365842604a8b 12 days ago 164MB
httpd latest c30a46771695 13 days ago 144MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos 7 eeb6ee3f44bd 7 months ago 204MB
centos 7.9.2009 eeb6ee3f44bd 7 months ago 204MB
centos centos7 eeb6ee3f44bd 7 months ago 204MB
centos centos7.9.2009 eeb6ee3f44bd 7 months ago 204MB
centos latest 5d0da3dc9764 7 months ago 231MB
docker images 명령을 통해 확인해보면 연달아 받은 4개의 이미지의 IMAGE ID가 같다. 즉 4개의 이미지는 같은 이미지이다.
얼마전까지 centos:7과 centos 7.9.2009가 같은 이미지였으나 새롭게 centos 이미지를 만들어 버전을 올리면서 ex) centos 7.10.2204과 centos:7이 같은 이미지가 된다면 다운 받는 시점에 따라 centos:7은 centos 7.9.2009 일수도 centos 7.10.2204 일 수도 있게된다.
다시 정리하면 centos:7은 최신 버전의 이미지를 tag로 붙여놓은 것이기 때문에 다운 받는 시점에 따라서 실제로 이전과는 같은 이미지가 아닐 가능성이 크다.
세부 버전까지 명시한 이미지가 아니면 이미지가 시점에 따라 바뀔 수 있다.
그래서 latest는 일반적으로 사용하면 안되는 태그이다.
이미지 태그를 눌러보면 DIGEST 값이 나오는데 그 값을 이용해 이미지를 pull 받을 수 있다.
vagrant@docker ~ docker pull centos@sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f4730f44dec0f47843
docker.io/library/centos@sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f4730f44dec0f47843: Pulling from library/centos
ce510b3e7858: Pull complete
Digest: sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f4730f44dec0f47843
Status: Downloaded newer image for centos@sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f4730f44dec0f47843
docker.io/library/centos@sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f4730f44dec0f47843
이미지의 내용을 가지고 해시값을 만드는 것이므로 이미지가 바뀌면 해시값도 바뀐다.
따라서 태그의 이름과 상관없이 이미지를 특정할 수 있어 이것을 사용해야 한다.
✔️ 이미지 삭제
docker rmi <IMAGE>
docker image rm <IMAGE>
vagrant@docker ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d2e4e1f51132 4 days ago 77.8MB
amazonlinux latest 365842604a8b 12 days ago 164MB
httpd latest c30a46771695 13 days ago 144MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos 7 eeb6ee3f44bd 7 months ago 204MB
centos 7.9.2009 eeb6ee3f44bd 7 months ago 204MB
centos centos7 eeb6ee3f44bd 7 months ago 204MB
centos centos7.9.2009 eeb6ee3f44bd 7 months ago 204MB
centos latest 5d0da3dc9764 7 months ago 231MB
centos <none> d0be79ecaa51 7 months ago 204MB
vagrant@docker ~ docker image rm centos@sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f4730f44dec0f47843
Untagged: centos@sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f4730f44dec0f47843
Deleted: sha256:d0be79ecaa51a8dd0d144ac7084e8407d06185aa81c214fb12fdd0ad7b5d3ad1
Deleted: sha256:4859ae5ec3f32794f427ca5bfbca6ad1e35248a473f07798f3fe4c61600cbc86
이미지를 지울 때도 마찬가지로 해시값을 사용해서 지우는 것을 권장한다.
✔️ 이미지 상세 정보 확인
docker inspect <IMAGE>
이미지의 DIGEST, 태그값, 만든 시점 등을 알 수 있다.
ContainerConfig
vs Config
ContainerConfig
: 이미지를 최초로 생성했을 때 사용했던 설정Config
: 가장 최근에 이미지 생성시 사용했던 설정 (실제로 적용되는 설정)
Config
Env
Cmd
ExposedPorts
WorkingDir
Volume
Entrypoint
Volumes
✔️ Config 원하는 값만 보기
docker inspect <IMAGE> --format '{{ .Config.Cmd }}'
docker inspect <IMAGE> --f '{{ .Config.Cmd }}'
vagrant@docker ~ docker image inspect mariadb:10.7 -f '{{ .Config.Cmd }}'
[mariadbd]
vagrant@docker ~ docker image inspect mariadb:10.7 --format '{{ .Config.Cmd }}'
[mariadbd]
vagrant@docker ~ docker image inspect mariadb:10.7 --format '{{ .Config.Entrypoint }}'
[docker-entrypoint.sh]
새로 사용할 이미지들은 Config 값을 살펴보는 것이 좋다.
✔️ 이미지 저장/아카이브
docker save <IMAGE> -o <FILE>
이미지 안의 내용이 어떻게 되어 있을 지 궁금할 때가 있다.
이미지를 컨테이너로 띄워서 확인할 수도 있지만, 저장 후 직접 내용을 볼 수도 있다.
이미지는 결국 파일의 모음이기 때문이다.
vagrant@docker ~ docker save hello-world -o hello-world.tar
vagrant@docker ~ file hello-world.tar
hello-world.tar: POSIX tar archive
기본적으로 tar archive가 된다.
이것을 풀어서 내용을 보게 되면
vagrant@docker ~ docker save hello-world -o hello-world.tar
vagrant@docker ~ file hello-world.tar
hello-world.tar: POSIX tar archive
vagrant@docker ~ mkdir hello-world
vagrant@docker ~ tar xf hello-world.tar -C hello-world
vagrant@docker ~ cd hello-world
vagrant@docker ~/hello-world ls
c28b9c2faac407005d4d657e49f372fb3579a47dd4e4d87d13e29edd1c912d5c manifest.json
feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412.json repositories
다시 archive에 가면 압축 파일이 하나 더 있고 그것을 풀면 실제 내용이 나온다.
vagrant@docker ~ cd hello-world
vagrant@docker ~/hello-world ls
c28b9c2faac407005d4d657e49f372fb3579a47dd4e4d87d13e29edd1c912d5c manifest.json
feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412.json repositories
vagrant@docker ~/hello-world cd c28b9c2faac407005d4d657e49f372fb3579a47dd4e4d87d13e29edd1c912d5c
vagrant@docker ~/hello-world/c28b9c2faac407005d4d657e49f372fb3579a47dd4e4d87d13e29edd1c912d5c ls
VERSION json layer.tar
vagrant@docker ~/hello-world/c28b9c2faac407005d4d657e49f372fb3579a47dd4e4d87d13e29edd1c912d5c tar xf layer.tar
vagrant@docker ~/hello-world/c28b9c2faac407005d4d657e49f372fb3579a47dd4e4d87d13e29edd1c912d5c ls
VERSION hello json layer.tar
vagrant@docker ~/hello-world/c28b9c2faac407005d4d657e49f372fb3579a47dd4e4d87d13e29edd1c912d5c file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
vagrant@docker ~/hello-world/c28b9c2faac407005d4d657e49f372fb3579a47dd4e4d87d13e29edd1c912d5c ./hello
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
cat 명령을 통해 앞서 보았던 hello-world 컨테이너 실행 시 출력 내용이 그대로 적혀 있는 것을 확인할 수 있다.
✔️이미지 가져오기
docker load -i <FILE>
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker 컨테이너 관리 명령어 (2) (0) | 2022.05.07 |
---|---|
[Docker] Docker 컨테이너 관리 명령어 (1) (0) | 2022.05.07 |
[Docker] Docker LifeCycle과 자주 사용하는 옵션 (0) | 2022.05.07 |
[Docker] Docker(도커)의 기본 명령어 (0) | 2022.05.07 |
[Docker] Docker(도커) 설치 (0) | 2022.05.06 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!