-
Docker란? + build processDocker 2021. 2. 19. 20:13
도커
- 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징 => 배포, 관리 단순화
- 컨테이너를 구축, 배포, 복사하고 다른 환경에서 유연하게 사용가능
- 컨테이너를 위한 플랫폼 셋
- Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers
도커 이미지
- 프로그램, 소스코드, 라이브러리 등 파일을 묶어주고, 컨테이너 안에서 특정 프로세스를 실행하기 위해 필요한 모든 파일, 설정값을 가지고 있음
- 하나의 이미지로 여러 컨테이너 생성 가능
- 깃헙와 유사한 도커헙을 통해 버전 관리 및 배포 가능
레이어 기반
- 이미지는 여러개의 읽기 전용 레이어로 구성되어 있고 파일이 추가/수정되면 새로운 레이어 생성됨
- 예) 우분투 이미지가 레이어a,b,c로 구성되어 있다면, nginx는 레이어a,b,c+nginx가 됨
- 예) 웹앱 이미지가 nginx 기반이라면 웹앱 소스가 변경된 경우 레이어abc,nginx는 그대로이기 때문에 변경된 소스의 레이어만 다운받으면 되므로 효율적으로 이미지 관리 및 공간 관리가 됨
컨테이너
- 이미지를 실행한 상태
도커파일 빌드하기
FROM alpine RUN apk add --update redis CMD ["redis-server"]1. docker build .
Sending build context to Docker daemon 2.048kB Step 1/3 : FROM alpine ### dockerhub 에서 image pull latest: Pulling from library/alpine ba3557a56b15: Pull complete Digest: sha256:a75afd8b57e7f34e4dad8d65e2c7ba2e1975c795ce1ee22fa34f8cf46f96a3be Status: Downloaded newer image for alpine:latest ---> 28f6e2705743 ### temp image Step 2/3 : RUN apk add --update redis ---> Running in e0f434a36974 ### temp image id 28f6e2705743 에서 temp container에 redis 설치 fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz (1/1) Installing redis (6.0.10-r0) Executing redis-6.0.10-r0.pre-install Executing redis-6.0.10-r0.post-install Executing busybox-1.32.1-r3.trigger OK: 8 MiB in 15 packages Removing intermediate container e0f434a36974 ### temp container id e0f434a36974 삭제 ---> ba9bb61d7d7b ### temp image Step 3/3 : CMD ["redis-server"] ---> Running in 8916ee365413 ### temp container id 8916ee365413 생성 Removing intermediate container 8916ee365413 ### temp container id 8916ee365413 삭제 ---> f719e09ac4fe ### image 생성 Successfully built f719e09ac4fe2. 두번째 빌드 - 캐시 사용 - 생성된 이미지 id 동일함
Sending build context to Docker daemon 2.048kB Step 1/3 : FROM alpine ---> 28f6e2705743 Step 2/3 : RUN apk add --update redis ---> Using cache ---> ba9bb61d7d7b Step 3/3 : CMD ["redis-server"] ---> Using cache ---> f719e09ac4fe Successfully built f719e09ac4fe3. Dockerfile 수정
FROM alpine RUN apk add --update redis RUN apk add --update gcc ### 추가된 부분 CMD ["redis-server"]4. 추가(변경)된 부분부터 설치 또는 실행(Cache x) 변경되고 새로운 이미지 생성됨(Image ID 변경)
$ docker build .
Sending build context to Docker daemon 2.048kB Step 1/4 : FROM alpine ---> 28f6e2705743 Step 2/4 : RUN apk add --update redis ---> Using cache ---> ba9bb61d7d7b Step 3/4 : RUN apk add --update gcc ---> Running in a7ea50ee4a0d fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz (1/11) Installing libgcc (10.2.1_pre1-r3) (2/11) Installing libstdc++ (10.2.1_pre1-r3) (3/11) Installing binutils (2.35.1-r1) (4/11) Installing libgomp (10.2.1_pre1-r3) (5/11) Installing libatomic (10.2.1_pre1-r3) (6/11) Installing libgphobos (10.2.1_pre1-r3) (7/11) Installing gmp (6.2.1-r0) (8/11) Installing isl22 (0.22-r0) (9/11) Installing mpfr4 (4.1.0-r0) (10/11) Installing mpc1 (1.2.0-r0) (11/11) Installing gcc (10.2.1_pre1-r3) Executing busybox-1.32.1-r3.trigger OK: 118 MiB in 26 packages Removing intermediate container a7ea50ee4a0d ---> 5170956d5689 Step 4/4 : CMD ["redis-server"] ---> Running in b595b6faece4 Removing intermediate container b595b6faece4 ---> d15f90c4757a Successfully built d15f90c4757a'Docker' 카테고리의 다른 글
도커 내부에서 동작하는 크롤러 개발하기 (0) 2022.07.17 우분투(ec2)에 도커 설치 (0) 2022.03.27 Docker - cmd, Dockerfile, docker-compose.yml (0) 2022.02.02 AWS Lambda - ECR(Elastic Container Registry) (0) 2022.01.28