빌드 방식 설명에서 도커 파일을 작성해서 이미지 빌드 명령을 실행하면 도커가 임시 컨테이너를 실행하고 도커 파일에 정의된 작업을 수행 및 커밋하여 새로운 레이어를 생성하고 임시 컨테이너를 삭제한다. 이렇게 그림으로 되어있는데, 커밋을 했다는게 새로운 레이어가 포함된 이미지를 만들었다는 건가요? 임시 컨테이너 생성, 커밋, 임시 컨테이너 삭제가 반복 저 과정이 반복되는 거면 지시어 한 문장을 만날 때마다 수행 및 커밋하고 임시 컨테이너 삭제하고를 반복한다고 이해했는데, 이러면 지시어가 많을 수록 임시 컨테이너 생성, 삭제가 많이 반복되는 건가요?
DevOps를 위한 Docker 가상화 기술 (Private Harbor Registry)
argocd에서 sync를 하여 cd를 하게 되면, 몇초 이따가 STATE: ImageInspectError, STATE DETAILS: Failed to inspect image "": rpc error: code = Unknown desc = unable to convert a nil pointer to a runtime API image 라는 에러가 발생합니다. 여러 자료를 찾아보니 인증서 문제 같다고 하여서 호스트 PC에서 Harbor의 cicd-web-project:태그를 docker pull 하여 보니 tls: failed to verify certificate: x509: certificate signed by unknown authority 인증서 관련 에러가 발생하였습니다. 아무래도 자체 인증으로 인하여 Harbor 레지스트리에서 신뢰하지 못하는 CA 인증서를 사용하기 때문인 것 같은데, 강사님께서 강의를 하시기 이전에 이러한 문제가 생겨서 조치한 부분이 있으실까요? 아니면, 이 부분은 Docker 업데이트로 인하여 이제는 제가 따로 인증서를 구하여 적용을 해야할까요?? 추후에 프로젝트에서 쿠버네티스까지 적용할 예정이어서 argocd에 대한 테스트를 정확히 하고 싶은데, 지금은 눈으로 보고 넘어가고, 프로젝트를 할때, 제대로 된 인증서를 발급 받아서 붙이는게 나을까요?
안녕하세요! 컨테이너를 처음 실행했을 때는 컨테이너 레이어에는 아무 파일도 존재하지 않는건가요? 만약 처음 컨테이너 레이어에 아무 파일도 존재하지 않는다면 docker -it bin/bash로 컨테이너 내부로 들어가서 보는 파일들은 이미지의 파일들이고, 그 이미지의 파일을 수정하면 컨테이너 레이어로 해당 파일을 복사한 뒤에 수정사항을 반영하는 건가요?(CoW)
안녕하세요! 강의 유익하게 듣고 있는 수강생입니다. 컨테이너 가상화 설명에서 궁금증이 생겨 글 남깁니다. (강의 장면 캡쳐가 불가하여 유사 그림으로 대체합니다!!) 도커는 호스트 OS의 커널을 바로 사용한다는 장점이 있다고 이해했습니다. 이때 여기서 호스트 OS가 리눅스라고 명시되어있는데 mac, windows를 사용하는 일반 사용자들도 호스트 os가 리눅스로 적용되는 것일 까요?? 해당 내용을 찾아보니 도커를 사용할 때는 리눅스 커널이 필수적으로 필요해서 가상화된 Linux를 내부적으로 사용한다고 확인했습니다. 이 내용을 리눅스 환경이 아닌경우 도커 내부에 리눅스가 가상화 기술로 적용되어 있다고 이해하는 것이 맞을까요?? 내장되어 있는 것이 맞다면 컨테이너 별로 리눅스가 별도로 포함되는것인지, 도커위에 하나의 리눅스OS를 갖고 있는 것인지 질문드리고 싶습니다! 유익한 강의 정말 감사드립니다 😀
docker-compose up -d 할때 leafy_leafy-front_1가 자꾸 꺼지고 restart 되는게 반복되는데 docker logs leafy_leafy-front_1 를로 확인해본결과 exec /usr/local/bin/ docker-entrypoint.sh : no such file or directory 라는 오류가 있네요 윈도우로 수업 들을때는 문제없었는데 aws ec2 아마존 리눅스 에서 돌려보니 해당 오류가 계속 생겨서 질문드립니다 검색 및 예전 답변을 참고해서 crlf 를 lf 로 바꿔도보고 새로 clone 해보고 했는데 여전히 오류 입니다. 윈도우에서는 되다가 오히려 리눅스 환경에서 안되는게 이유를 모르겠습니다 ㅠㅠ 답변 부탁합니다
https://www.inflearn.com/community/questions/1532164/docker-%EB%B0%B1%EC%95%A4%EB%93%9C-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%8B%A4%ED%96%89%EC%8B%9C-%EC%98%A4%EB%A5%98 이 글처럼 똑같이 안되고있습니다. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processorMetrics' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.micrometer.core.instrument.binder.system.ProcessorMetrics]: Factory method 'processorMetrics' threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support .ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1616) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1573) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1417) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1349) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .DefaultListableBeanFactory$DependencyObjectProvider.resolveStream(DefaultListableBeanFactory.java:2119) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .DefaultListableBeanFactory$DependencyObjectProvider.orderedStream(DefaultListableBeanFactory.java:2113) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryConfigurer.addBinders(MeterRegistryConfigurer.java:87) ~[spring-boot-actuator-autoconfigure-2.7.10.jar!/:2.7.10] at org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryConfigurer.configure(MeterRegistryConfigurer.java:68) ~[spring-boot-actuator-autoconfigure-2.7.10.jar!/:2.7.10] at org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryPostProcessor.postProcessAfterInitialization(MeterRegistryPostProcessor.java:64) ~[spring-boot-actuator-autoconfigure-2.7.10.jar!/:2.7.10] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:455) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1808) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.26.jar!/:5.3.26] ... 71 common frames omitted Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.micrometer.core.instrument.binder.system.ProcessorMetrics]: Factory method 'processorMetrics' threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support .SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.26.jar!/:5.3.26] at org.springframework.beans.factory.support .ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.26.jar!/:5.3.26] ... 93 common frames omitted Caused by: java.lang.NullPointerException: null at java.base/jdk.internal.platform.cgroupv2.CgroupV2Subsystem.getInstance(Unknown Source) ~[na:na] at java.base/jdk.internal.platform.CgroupSubsystemFactory.create(Unknown Source) ~[na:na] at java.base/jdk.internal.platform.CgroupMetrics.getInstance(Unknown Source) ~[na:na] at java.base/jdk.internal.platform.SystemMetrics.instance(Unknown Source) ~[na:na] at java.base/jdk.internal.platform.Metrics.systemMetrics(Unknown Source) ~[na:na] at java.base/jdk.internal.platform.Container.metrics(Unknown Source) ~[na:na] at jdk.management/com.sun.management.internal.OperatingSystemImpl.<init>(Unknown Source) ~[na:na] at jdk.management/com.sun.management.internal.PlatformMBeanProviderImpl.getOperatingSystemMXBean(Unknown Source) ~[na:na] at jdk.management/com.sun.management.internal.PlatformMBeanProviderImpl$3.nameToMBeanMap(Unknown Source) ~[na:na] at java.management/sun.management.spi.PlatformMBeanProvider$PlatformComponent.getMBeans(Unknown Source) ~[na:na] at java.management/java.lang.management.ManagementFactory.getPlatformMXBean(Unknown Source) ~[na:na] at java.management/java.lang.management.ManagementFactory.getOperatingSystemMXBean(Unknown Source) ~[na:na] at io.micrometer.core.instrument.binder.system.ProcessorMetrics.<init>(ProcessorMetrics.java:81) ~[micrometer-core-1.9.9.jar!/:1.9.9] at io.micrometer.core.instrument.binder.system.ProcessorMetrics.<init>(ProcessorMetrics.java:76) ~[micrometer-core-1.9.9.jar!/:1.9.9] at org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration.processorMetrics(SystemMetricsAutoConfiguration.java:59) ~[spring-boot-actuator-autoconfigure-2.7.10.jar!/:2.7.10] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na] at org.springframework.beans.factory.support .SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.26.jar!/:5.3.26] ... 94 common frames omitted docker logs -f leafy 했을 때 이렇게 나와요.. 커뮤니티에 나와있는대로 삭제했다가 다시 깔아봤고, name을 잘못적었는지도 확인해보았는데 전혀 잘못된게 없었습니다. leafy-postgres도 'Leafy 애플리케이션 구성' 강의에서 말씀하신것처럼 정상작동하는 것도 확인했습니다. docker inspect leafy-postgres | grep -A 2 "Networks" 를 치면 "Networks": { "leafy-network": { "IPAMConfig": null, 이렇게 나오고 있습니다. 어떻게 해야할까요 빠른답변 부탁드리겠습니다.
TOPIC1. 레이어 관리에서 RUN 지시어 사용 시 && 연산자를 사용하여 레이어의 개수를 5개에서 1개로 줄이고 있는데요. 이미지의 사이즈를 줄이고 빌드 속도를 높이기 위함. 이라고 말씀을 해주셨습니다. 먼저, 질문은 2가지입니다. 레이어의 사이즈가 동일한데, 어떤 관점으로 이미지의 사이즈가 축소되는 것인가? 레이어의 재활용성에 대해서 어떻게 생각하시는지? 레이어의 사이즈를 봤을 때 5개, 1개의 사이즈가 116MB로 동일하니 이미지의 사이즈는 동일한 것으로 보입니다. 1개의 레이어는 5개의 레이어를 별도로 불러와서 빌드하지는 않으니 속도가 빨라질 수는 있을 것 같다는 생각이 들어서 빌드의 속도는 빨라지나 이미지의 사이즈가 줄어든다. 라는 부분이 이해가 되지 않았습니다. 흔한 케이스는 아닐 것 같으나, 5개의 레이어를 분리를 하게 되면 레이어를 재사용 할 수 있는 장점이 있을 것 같다는 생각이 들었습니다. 마치, 깃을 다룰 때 한 개의 커밋에 하나의 기능만 포함하도록 한 느낌처럼요. 적절하게 레이어를 분리하는 시점을 찾는 것이 중요한 것으로 얘기를 해주신걸까? 하는 생각을 해봤습니다.
안녕하세요, 강의 6-3을 듣다가 막히는 부분이 있어 질문드립니다. postgres container를 잘 실행하고 백엔드 컨테이너를 docker run -d -p 80:80 --network leafy-network --name leafy-front devwikirepo/leafy-frontend:1.0.0 명령어를 통해 실행하였습니다. 그런데 이후에 log를 보면 아래와 같은 문구들이 나오면서, 에러가 발생했다고 나옵니다. (글씨가 너무 작아서, 에러 부분은 아래와 같습니다) 2025-02-28 12:36:54.708 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 526 ms 2025-02-28 12:36:54.731 ERROR 1 --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'webMvcMetricsFilter' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.class]: Unsatisfied dependency expressed through method 'webMvcMetricsFilter' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'simpleMeterRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processorMetrics' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.micrometer.core.instrument.binder.system.ProcessorMetrics]: Factory method 'processorMetrics' threw exception; nested exception is java.lang.NullPointerException 2025-02-28 12:36:54.740 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2025-02-28 12:36:54.743 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat 2025-02-28 12:36:54.749 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-02-28 12:36:54.757 ERROR 1 --- [ main] o.s.boot.SpringApplication : Application run failed docker ps -a를 해보면 아래와 같이 로그가 나옵니다. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES df36a2b0896f devwikirepo/leafy-backend:1.0.0 "java -jar leafy.jar" 52 seconds ago Exited (1) 50 seconds ago leafy 9e9ee5a82c36 devwikirepo/leafy-postgres:1.0.0 "docker-entrypoint.s…" 27 minutes ago Up 27 minutes 5432/tcp leafy-postgres\ 혹시 어떤 오류이고, 어떻게 해결하면 좋을까요? 감사합니다.
DevOps를 위한 Docker 가상화 기술 (Private Harbor Registry)
안녕하세요, Harbor+Jenkins 실습 중 문의사항이 생겨 질문 남깁니다. Jenkins에서 Harbor로 푸시를 할 때 에러가 발생해 확인해보니 https 관련 에러가 나는 것 같았습니다. 확인해보니 Harbor를 설치하고 며칠 뒤 실습을 진행해 host pc의 ip가 변경되었고, 이로 인해 문제가 발생하고 있었습니다. 이럴 경우, 매번 재설정을 해주는 것 외에 다른 해결법이 있을까요? 감사합니다.
gredle 을 빌드 도구 설치 해보려 하는데 메이븐과 그래들 도커파일이 설정값이 많이 달라질까요? 빌드 환경이 무엇 이냐에 따라 도커파일 설정값들을 어떻게 해야 하는지 참조 할 수 있는 있는 사이트가 있을지 궁금합니다 같은 코드로 gradle일때 변경되는 설정 값에 대해 시간이 되신다면 pdf, 깃 파일, 강의 아무거나 넣어 주시면 너무 감사드리겠습니다 gradle 하나 겨우 배워놨는데 아래에 내용에 모두 메이븐 이라고 생각하니 슬프네유 ㅠ
도커 컨테이너 내부에서 개발하는 것에 의문점이 있습니다. 개발 환경 세팅이 오래 걸려도 사실 그렇게까지 오래 걸리진 않는다고 생각하고, 개발 환경 버전이 바뀔 때도 팀 내에서 의견을 맞춰서 싱크를 맞추면 문제가 없지 않을까 싶은데요. 물론 버전이 다른 프로젝트를 여러 개 관리해야하는 상황이라면 번거로움을 없애기 위해 필요할 수도 있겠다는 생각이 들긴 합니다. 그런데 도커 컨테이너로 한 번 감싸서 개발을 진행하게 되면, 성능에 이슈가 생기지는 않나요? 바로 개발하는 것과 달리 리소스에 제한을 두게 되고 도커를 한 번 거쳐서 개발을 하게 되는 것 같아서요.