# 1. 이미지 다운로드
docker image pull [옵션] 이미지명 [:태그명]
# CentOS 이미지 다운로드
# 태그명을 생략하면 latest 버전을 다운로드함
hjk@hjk-VirtualBox:~$ sudo docker image pull centos:7
[sudo] hjk의 암호:
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
# CentOS의 모든 태그 이미지 다운로드
# -a 옵션 지정 시 모든 태그 다운로드
# -a 옵션 지정 시 이미지명에 태그 지정을 할 수 없음
hjk@hjk-VirtualBox:~$ sudo docker image pull -a centos
# 다운로드한 이미지 확인
hjk@hjk-VirtualBox:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 9873176a8ff5 3 days ago 72.7MB
nginx latest d1a364dc548d 3 weeks ago 133MB
centos 7 8652b9f0cb4c 7 months ago 204MB
centos 6.6 368c96d786ae 2 years ago 203MB
centos 6.7 9f1de3c6ad53 2 years ago 191MB
centos 6.8 82f3b5f3c58f 2 years ago 195MB
centos 6.9 2199b8eb8390 2 years ago 195MB
centos 6.10 48650444e419 2 years ago 194MB
centos 7.0.1406 cc2cf48cc784 2 years ago 210MB
centos 7.1.1503 e1430271e2f9 2 years ago 212MB
centos 7.2.1511 9aec5c5fe4ba 2 years ago 195MB
centos 7.3.1611 c5d48e81b986 2 years ago 192MB
centos 7.4.1708 9f266d35e02c 2 years ago 197MB
centos 7.5.1804 cf49811e3cdb 2 years ago 200MB
centos 6 d0957ffdf8a2 2 years ago 194MB
centos 5.11 b424fba01172 4 years ago 284MB
centos 5 1ae98b2c895d 4 years ago 285MB
# 2. 이미지 목록 표시
docker image ls [옵션] [리포지토리명]
옵션 | 설명 |
-all, -a | 모든 이미지 표시 |
--digests | * 다이제스트 표시 여부 |
--no-trunc | 결과 모두 표시 |
--quiet, -q | docker 이미지 ID만 표시 |
- 다이제스트: Docker 레지스트리에 업로드한 이미지는 이미지를 고유하게 식별하기 위해 다이제스트가 부여됨
hjk@hjk-VirtualBox:~$ sudo docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 9873176a8ff5 3 days ago 72.7MB
nginx latest d1a364dc548d 3 weeks ago 133MB
centos 7 8652b9f0cb4c 7 months ago 204MB
hjk@hjk-VirtualBox:~$ sudo docker image ls --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
ubuntu latest sha256:aba80b77e27148d99c034a987e7da3a287ed455390352663418c0f2ed40417fe 9873176a8ff5 3 days ago 72.7MB
nginx latest sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750 d1a364dc548d 3 weeks ago 133MB
centos 7 sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e 8652b9f0cb4c 7 months ago 204MB
hjk@hjk-VirtualBox:~$ sudo docker image ls --no-trunc
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest sha256:9873176a8ff5ac192ce4d7df8a403787558b9f3981a4c4d74afb3edceeda451c 3 days ago 72.7MB
nginx latest sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdee 3 weeks ago 133MB
centos 7 sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf 7 months ago 204MB
hjk@hjk-VirtualBox:~$ sudo docker image ls -q
9873176a8ff5
d1a364dc548d
8652b9f0cb4c
hjk@hjk-VirtualBox:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 9873176a8ff5 3 days ago 72.7MB
nginx latest d1a364dc548d 3 weeks ago 133MB
centos 7 8652b9f0cb4c 7 months ago 204MB
항목 | 설명 |
REPOSITORY | 이미지 이름 |
TAG | 이미지 태그명 |
IMAGE ID | 이미지 ID |
CREATED | 작성일 |
SIZE | 이미지 크기 |
hjk@hjk-VirtualBox:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 9873176a8ff5 3 days ago 72.7MB
nginx latest d1a364dc548d 3 weeks ago 133MB
centos 7 8652b9f0cb4c 7 months ago 204MB
# 고유한 다이제스트를 이용한 이미지 식별
# docker 레지스트리에 이미지 업로드
hjk@hjk-VirtualBox:~$ sudo docker pull asashiho/dockersample
Using default tag: latest
latest: Pulling from asashiho/dockersample
8ba884070f61: Pull complete
be5a2e86d256: Pull complete
7ff082be3903: Pull complete
Digest: sha256:214fb190b7f3e69ed44c908869cb2b86c2dc5a450128e045e2090bb6f0af9a50
Status: Downloaded newer image for asashiho/dockersample:latest
docker.io/asashiho/dockersample:latest
# 업로드된 이미지의 다이제스트 목록 출력
# 레지스트리 (Registry)
- 이미지 호스팅 및 배포를 담당하는 서비스입니다.
- 기본 레지스트리는 Docker Hub입니다.
- 일반적으로 소프트웨어가 상업용 인 경우이를 "개인 및 신뢰할 수있는"레지스트리로 호스팅하게됩니다.
# 리포지토리 (Repository)
- 관련 이미지 모음 (일반적으로 동일한 애플리케이션 또는 서비스의 서로 다른 버전 제공).
- "태그가 지정된"이미지 세트입니다.
- 예를 들어 5 개의 ubuntu:latest이미지에 태그를 지정할 수 있습니다.
hjk@hjk-VirtualBox:~$ sudo docker image ls --digests asashiho/dockersample
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
asashiho/dockersample latest sha256:214fb190b7f3e69ed44c908869cb2b86c2dc5a450128e045e2090bb6f0af9a50 6d041c204453 2 years ago 319MB
# 3. 이미지 상세 정보 확인
docker image inspect
- 정보 형식 : JSON, 텍스트 기반 데이터 포맷
# 이미지 상세 정보 표시
- “Id” : 이미지 ID
- “Created” : 작성일
- “DockerVersion” : Docker 버전
- “Architecture” : CPU 아키텍처
hjk@hjk-VirtualBox:~$ sudo docker image inspect centos:7
[sudo] hjk의 암호:
[
{
…
"Id": "sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf",
…
"Created": "2020-11-14T00:20:04.644613188Z",
…
"DockerVersion": "19.03.12",
…
"Architecture": "amd64",
…
}
]
# OS 정보 취득
# --format 옵션 : OS 정보 출력, OS의 값은 루트 아래(이름 없음)에 있는 “OS”안에 설정되어 있음
hjk@hjk-VirtualBox:~$ sudo docker image inspect --format="{{ .Os}}" centos:7
linux
# image 정보 취득
# ContainerConfig의 Image 값 출력
hjk@hjk-VirtualBox:~$ sudo docker image inspect --format="{{ .ContainerConfig.Image }}" centos:7
sha256:05e222a9fa848efd0d4dd0969ea27c789a1eff8445d25c4f13f932ead6e3b674
# 4. 이미지 태그 설정
docker image tag <Docker Hub 사용자명>/이미지명: [태그명]
# 이미지에 대한 태그 설정
# 이미지 이름 : nginx
# 사용자명 : asashiho
# 컨테이너명 : webserver
# 버전 : 1.0
hjk@hjk-VirtualBox:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest d1a364dc548d 3 weeks ago 133MB
hjk@hjk-VirtualBox:~$ sudo docker image tag nginx asashiho/webserver:1.0
# 확인 사항 : 태그를 붙인 이미지(asashiho/webserver:1.0)와 원래의 이미지(nginx)의 “IMAGE ID”가 동일함
hjk@hjk-VirtualBox:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
asashiho/webserver 1.0 d1a364dc548d 3 weeks ago 133MB
nginx latest d1a364dc548d 3 weeks ago 133MB
# 5. 이미지 검색
docker search [옵션] <검색 키워드>
옵션 | 설명 |
--no-trunc | 결과를 모두 표시 |
--limit | n건의 검색 결과 표시 |
--filter=stars=n | 즐겨찾기의 수(n 이상)를 지정정 |
# Docker Hub에 공개되어 있는 이미지 검색
hjk@hjk-VirtualBox:~$ sudo docker search nginx
[sudo] hjk의 암호:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 15057 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2039 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 814 [OK]
항목 | 설명 |
NAME | 이미지 이름 |
DESCRIPTION | 이미지 설명 |
STARS | 즐겨찾기 수 |
OFFICIAL | 공식 이미지 |
AUTOMATED | Dockerfile을 바탕으로 자동 생성된 이미지 |
# 인기있는 이미지 검색
hjk@hjk-VirtualBox:~$ sudo docker search --filter=stars=1000 nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 15057 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2039 [OK]
- Docker Hub에 공개되어 있는 이미지가 모두 안전하다고 볼 수 없기 때문에 Docker 이미지를 이용할 때는 공식 이미지 또는 Dockerfile이 제대로 공개되어 있는 것을 선택하여 확인 후 사용할 것
# 6. 이미지 삭제
docker image rm [옵션] 이미지명 [이미지명]
옵션 | 설명 |
--force, -f | 이미지를 강제로 삭제 |
--no-prune | 중간 이미지를 삭제하지 않음 |
docker image prune [옵션]
옵션 | 설명 |
--force, -f | 이미지를 강제로 삭제 |
--all, -a | 사용하지 않은 이미지를 모두 삭제 |
# 이미지 삭제
hjk@hjk-VirtualBox:~$ sudo docker image rm nginx
Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container 3e64d7145e5a is using its referenced image d1a364dc548d
hjk@hjk-VirtualBox:~$ sudo docker image rm -f nginx
Untagged: nginx:latest
Untagged: nginx@sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750
Deleted: sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdee
# 7. Docker Hub에 로그인
docker login [옵션] [서버]
옵션 | 설명 |
--password, -p | 비밀번호 |
--username, -u | 사용자명 |
- 로그인에 성공하면 ‘Login Succeded’라는 메시지가 표시됨
- 서버명을 지정하지 않을 경우 Docker Hub에 액세스 됨
- 다른 환경에 Docker 리포지토리가 있는 경우 서버명을 지정하여 사용
# Docker Hub에 로그인
hjk@hjk-VirtualBox:~$ sudo docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: [Docker Hub ID]
Password: [Docker Hub PW]
WARNING! Your password will be stored unencrypted in /home/hjk/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
# -p 옵션은 비밀번호가 표시되기 때문에 보안상 권장하지 않음
hjk@hjk-VirtualBox:~$ sudo docker login -u [Docker Hub ID] -p [Docker Hub PW]
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/hjk/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
# 8. 이미지 업로드
docker image push 이미지명 [:태그명]
<Docker Hub 사용자명>/이미지명:[태그명]
hjk@hjk-VirtualBox:~$ sudo docker image tag nginx khj708/webserver:1.0
hjk@hjk-VirtualBox:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
khj708/webserver 1.0 4f380adfc10f 19 hours ago 133MB
nginx latest 4f380adfc10f 19 hours ago 133MB
ubuntu latest 9873176a8ff5 6 days ago 72.7MB
centos 7 8652b9f0cb4c 7 months ago 204MB
hjk@hjk-VirtualBox:~$ sudo docker push khj708/webserver:1.0
The push refers to repository [docker.io/khj708/webserver]
c6d74dcb7fe7: Mounted from library/nginx
b50a193ebf2e: Mounted from library/nginx
165eb6c3c0d3: Mounted from library/nginx
cf388fcf3527: Mounted from library/nginx
2418679ca01f: Mounted from library/nginx
764055ebc9a7: Mounted from library/nginx
1.0: digest: sha256:2f1cd90e00fe2c991e18272bb35d6a8258eeb27785d121aa4cc1ae4235167cfd size: 1570
# 업로드 완료 후 Docker Hub에 새로운 이미지가 등록된 것을 확인할 수 있음
# 9. Docker Hub에서 로그아웃
hjk@hjk-VirtualBox:~$ sudo docker logout
Removing login credentials for https://index.docker.io/v1/