반응형
1. 기본 Registry
- Registry: https://index.docker.io/v1/
## docker 이미지를 내려받는 기본 주소는 아래와 같이
## Registry: https://index.docker.io/v1/
## 이는 도커 허브의 기본 주소로 지정
[root@docker]# docker info
Client:
Debug Mode: false
Server:
Containers: 3
Running: 0
Paused: 0
Stopped: 3
Images: 1
Server Version: 19.03.12
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1127.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.682GiB
Name: OPENLDAP-TEST
ID: YHJD:CFBU:SHTU:TPCA:MT6O:HJXO:BO75:IDNG:PQDC:EP6Z:ZCV6:QIHE
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
2. nginx 이미지 내려받기
## pull이란 옵션은 이미지를 내려받기만 할때 사용
## docker는 unoin 마운트를 지원하므로 이미지의 수정이 일어나면 layer로 겹쳐 마운트한다.
## 옛 버전(1.0)의 경우 Layer하나가 이미지로 생성 된 반면 현재는 이미지가 아닌 Layer 형태로 존재한다.
## 아래 "Pull complete" 가 5개 인데 이는 Layer가 5개로 nginx 이미지를 생성 하기위해서 수정 했던 횟수를 말한다.
[root@Odocker ~]# docker pull nginx:latest
latest: Pulling from library/nginx
6ec8c9369e08: Pull complete
d3cb09a117e5: Pull complete
7ef2f1459687: Pull complete
e4d1bf8c9482: Pull complete
795301d236d7: Pull complete
Digest: sha256:0e188877aa60537d1a1c6484b8c3929cfe09988145327ee47e8e91ddf6f76f5c
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
## nginx image의 Layer 기록을 확인 할 수 있다.
[root@OPENLDAP-TEST nginx]# docker history nginx:latest
IMAGE CREATED CREATED BY SIZE COMMENT
8cf1bfb43ff5 Less than a second ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
<missing> Less than a second ago /bin/sh -c #(nop) STOPSIGNAL SIGTERM 0B
<missing> Less than a second ago /bin/sh -c #(nop) EXPOSE 80 0B
<missing> Less than a second ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B
<missing> Less than a second ago /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7… 1.04kB
<missing> Less than a second ago /bin/sh -c #(nop) COPY file:1d0a4127e78a26c1… 1.96kB
<missing> Less than a second ago /bin/sh -c #(nop) COPY file:e7e183879c35719c… 1.2kB
<missing> Less than a second ago /bin/sh -c set -x && addgroup --system -… 63.3MB
<missing> Less than a second ago /bin/sh -c #(nop) ENV PKG_RELEASE=1~buster 0B
<missing> Less than a second ago /bin/sh -c #(nop) ENV NJS_VERSION=0.4.2 0B
<missing> Less than a second ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.19.1 0B
<missing> Less than a second ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
<missing> Less than a second ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> Less than a second ago /bin/sh -c #(nop) ADD file:6ccb3bbcc69b0d44c… 69.2MB
## 이 히스토리중 SIZE가 표기된 5개가 nginx:latest 이미지를 pull 했을때 다운 받았던 Layer의 개수 와 일치한다.
3. 이미지 위치 확인
## 이미지의 정보는 아래와 같이 출력 하며 Layer의 디렉토리 명을 나타낸다.
[root@docker]# docker image inspect nginx
[
...
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:95ef25a3204339de1edf47feaa00f60b5ac157a498964790c58c921494ce7ffd",
"sha256:d899691659b0a023be369ea77d6dedcf959aa50fcfdfd97603983b5f94296c20",
"sha256:227442bb48dc0fb87876f4e4b767718f45c88f888f15ad22cca38193f99559f7",
"sha256:1698c1b7e3e687db0079af289f1685cd2526c21d80d5b13b3ba0e9b191b9fb6f",
"sha256:98b4c818e603e05abe4963d66b975deaeab44997972f7f69533af9be1293de78"
]
},
...
## overlay2의 이미지 위치는 기본적으로 /var/lib/docker/image 이다.
## 위 nginx 이미지의 정보에
## "Id": "sha256:8cf1bfb43ff5d9b05af9b6b63983440f137c6a08320fa7592197c1474ef30241"
## 와 일치 한다.
[root@docker sha256]# ll
total 8
-rw------- 1 root root 7506 Jul 13 11:02 8cf1bfb43ff5d9b05af9b6b63983440f137c6a08320fa7592197c1474ef30241
[root@OPENLDAP-TEST sha256]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 8cf1bfb43ff5 Less than a second ago 132MB
[root@docker sha256]# pwd
/var/lib/docker/image/overlay2/imagedb/content/sha256
## Layer 는 다음과 같은 위치에서 확인 가능하다.
[root@docker sha256]# pwd
/var/lib/docker/image/overlay2/layerdb/sha256
[root@docker sha256]# ll
total 0
drwx------ 2 root root 85 Jul 13 11:02 18cb14912446a24695198924710f359397929d94acd7d86c8bb0b3dbaa9b672f
drwx------ 2 root root 85 Jul 13 11:02 3a069d285e939b95a82cecf0e6ac9b3ac3c21397f9d1c97276f98551cfa02b3d
drwx------ 2 root root 71 Jul 13 11:02 95ef25a3204339de1edf47feaa00f60b5ac157a498964790c58c921494ce7ffd
drwx------ 2 root root 85 Jul 13 11:02 ed095e8a33da1985dfdb0b098c2e7ffb035f98f2ff98c648bdf67d4b880a7b3d
drwx------ 2 root root 85 Jul 13 11:04 f693fa68e7be60da5f2631f94268bb7231278a9e0a10e25798173ce6dd2e4d9d
[root@docker f693fa68e7be60da5f2631f94268bb7231278a9e0a10e25798173ce6dd2e4d9d]# ll
total 20
-rw-r--r-- 1 root root 64 Jul 13 11:02 cache-id
-rw-r--r-- 1 root root 71 Jul 13 11:02 diff
-rw-r--r-- 1 root root 71 Jul 13 11:02 parent
-rw-r--r-- 1 root root 4 Jul 13 11:02 size
-rw-r--r-- 1 root root 364 Jul 13 11:02 tar-split.json.gz
## parent : 이전 Layer 이름
## diff : 현재 Layer 이름
## cache-id : 컨테이너 실행 시 반영 Layer 이름
## image inspect nginx 에서 확인한 Layer sha256 이름과 다르지만
## 아래와 같이 출력하면 일치하는 것을 확인할 수 있다.
[root@OPENLDAP-TEST 18cb14912446a24695198924710f359397929d94acd7d86c8bb0b3dbaa9b672f]# cat ../18cb14912446a24695198924710f359397929d94acd7d86c8bb0b3dbaa9b672f/diff
sha256:d899691659b0a023be369ea77d6dedcf959aa50fcfdfd97603983b5f94296c20
[root@OPENLDAP-TEST 18cb14912446a24695198924710f359397929d94acd7d86c8bb0b3dbaa9b672f]# cat ../3a069d285e939b95a82cecf0e6ac9b3ac3c21397f9d1c97276f98551cfa02b3d/diff
sha256:227442bb48dc0fb87876f4e4b767718f45c88f888f15ad22cca38193f99559f7
## 또한 cache-id를 출력하여 실제 이미지의 Layer 파일을 확인 할 수 있다.
## 실 파일 위치는 /var/lib/docker/overlay2/
[root@docker 18cb14912446a24695198924710f359397929d94acd7d86c8bb0b3dbaa9b672f]# cat cache-id
b510c14f732fa463350da3fa4cc78d7fdc86cac7024b700529cb18459197bbe3
[root@docker overlay2]# ll
total 4
drwx------ 4 root root 55 Jul 13 11:15 5356fa005d4ef7b53132406b3ca0afdc47b2e31b3cfb927627542c39d7055b46
drwx------ 4 root root 72 Jul 13 11:14 5356fa005d4ef7b53132406b3ca0afdc47b2e31b3cfb927627542c39d7055b46-init
drwx------ 3 root root 47 Jul 13 11:02 5b06bfad8b594fb3189e77fb3c9078ff734292d4ec0ca068f2ff41ba863a92d2
drwx------ 4 root root 55 Jul 13 11:13 663cffc772843377dd0bb956ef7fc040e9d38f65770fc1b6d57db000470c41b5
drwx------ 4 root root 72 Jul 13 11:12 663cffc772843377dd0bb956ef7fc040e9d38f65770fc1b6d57db000470c41b5-init
drwx------ 4 root root 72 Jul 13 11:02 85ca5bd7fa8cf6f6a2a900e23186826c24080f6426e616940eec11a969a6c71c
drwx------ 4 root root 72 Jul 13 11:02 8b60a01d702a2f1103b0d7f07beee875265d16f864af4d8f7cf6344df2e865aa
drwx------ 4 root root 72 Jul 13 11:02 b510c14f732fa463350da3fa4cc78d7fdc86cac7024b700529cb18459197bbe3
brw------- 1 root root 8, 2 Jul 9 13:50 backingFsBlockDev
drwx------ 4 root root 72 Jul 13 11:12 c1d18b42d213c10ee9fa649fc2efd4d0e843b919ddfb6a49c1cfa72c3ad520e0
drwx------ 4 root root 55 Jul 13 11:14 e0a916a07f4885db77584160199982ec54704e17613ec81390affb6fb3f98e55
drwx------ 4 root root 72 Jul 13 11:13 e0a916a07f4885db77584160199982ec54704e17613ec81390affb6fb3f98e55-init
drwx------ 2 root root 4096 Jul 13 11:14 l
[root@docker overlay2]# cd b510c14f732fa463350da3fa4cc78d7fdc86cac7024b700529cb18459197bbe3
[root@docker b510c14f732fa463350da3fa4cc78d7fdc86cac7024b700529cb18459197bbe3]# ll
total 8
-rw------- 1 root root 0 Jul 13 11:02 committed
drwxr-xr-x 8 root root 88 Jul 13 11:02 diff
-rw-r--r-- 1 root root 26 Jul 13 11:02 link
-rw-r--r-- 1 root root 28 Jul 13 11:02 lower
drwx------ 2 root root 6 Jul 13 11:02 work
[root@dockerT b510c14f732fa463350da3fa4cc78d7fdc86cac7024b700529cb18459197bbe3]# cd diff/
[root@docker diff]# ll
total 4
drwxr-xr-x 2 root root 6 Jul 22 2020 docker-entrypoint.d
drwxr-xr-x 20 root root 4096 Jul 22 2020 etc
drwxr-xr-x 5 root root 56 Jul 22 2020 lib
drwxrwxrwt 2 root root 6 Jul 22 2020 tmp
drwxr-xr-x 7 root root 66 Jul 20 2020 usr
drwxr-xr-x 5 root root 41 Jul 20 2020 var
## Layer는 기본적으로 파일 형태로 저장되며 여기서 수정도 가능하다.
## 실제 수정하여 컨테이너를 실행했을경우 그대로 반영되는 것을 볼 수 있는데 이러한 작업은 절대 하지 않는 것이 좋다.
## 이는 로컬레이어의 파일을 변경한 것이지 이미지 자체를 변경한것은 아니기때문이다. 따라서 Layer는 기본적으로 "읽기 전용"(실제 변경할수 있지만) 이다.
반응형
'Micro Service Architecture > Docker' 카테고리의 다른 글
5. [docker] container run (0) | 2021.03.16 |
---|---|
4. [docker] container, image 삭제 (0) | 2021.03.16 |
3. [docker] dockerfile build (0) | 2021.03.16 |
2. [docker] images commit (0) | 2021.03.16 |
0. [docker] 설치 (0) | 2021.03.16 |