묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨개발자를 위한 쉬운 도커
서버가 각각 구성된 실무에선 컨테이너가 어떻게 사용되는지 궁금해요
안녕하세요! 🙃 이런 질문 올려도 되는지 모르겠지만 ..여태 로컬에서 여러 컨테이너 띄워서 테스트 하다가 궁금한게 생겼습니다..실제로 도커를 사용하는 환경이라고 해야되나 어떻게 활용되는지 궁금해서요!강의에서는 3티어로 한 서버(로컬)에서 한번에 구성하는걸 알려주셨는데 개발 할 땐 편할거 같지만 배포하고 운영할때는 어떻게 사용되는걸까요? (서버 한대에 3티어를 구성할때 사용할수는 있을것 같지만요..🤔)아래를 예로 들자면(실제로 서버를 이렇게 구성하는게 맞는건진 모르겠네요..😭)프론트-리액트백엔드-스프링부트Db-redis, mysql이렇게 사용한다고 했을때실제 현업 서비스라면Nginx-클라우드 서버 2대 사용Was-클라우드 서버 2대 사용Db-클라우드 서버 3대(?) 사용 (mysql 이중화, 캐시용 redis 1대)이렇게 서버를 여러개 써서 구축할텐데각각 서버에 직접 프로세스 하나씩 띄우는게 기존 방식인 상태인거죠..🤔이 상태에서 ci/cd를 구축하기 위해서 컨테이너 기술을 사용한다면…각각 웹, 와스, db 서버에서 전부 도커로 띄우게 되는 걸까요?프론트랑 백은 배포까지 해야할테니 그럴것 같은데 db도 도커로 띄우면 장점이 있나요?3티어를 전부 쿠버네티스로 관리하기 위한 게 맞을까요..?각각 서버 하나에 컨테이너 하나씩 띄워서 운영되는 건지.. 한 서버에 내에서 컨테이너로 이중화 하는 상황도 있는건지… 궁금합니다🥹🥹🥹🥹실제로 개인 프로젝트를 클라우드 서버에 배포 해보고 싶어서 질문이 많았네요😅
-
해결됨쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2
ArgoCD Image Updater ConfigMap 설정
안녕하세요. ArgoCD Image Updater를 이용하여 Dev환경에서 code trigger 발생시 이미지 자동 빌드/업데이트부터, 이미지 업데이트를 감지하여 자동 배포까지 되도록 구성중에 있습니다.그런데 image updater를 설치를 다 했고 image updater 파드에서 test 실행시에도 정상으로 나오면서 pod log에서도 2분 주기로 정상동작을 하고 있습니다.다만, argocd 에서 application에 annotation을 아무리 설정을 해도 자동 배포가 되지 않고 image updater 파드 로그 확인시에도 카운트는 계속 0 으로 나온다는 것이죠. image updater가 argocd application 을 바라보지 못 하는 것인가 싶은데, configmap에서 설정을 수정해야 하는 것인지 어디가 문제인지 어떻게 해결해야 하는지 감이 잘 안옵니다..제 환경을 먼저 설정드리자면private registryregistry credentail = secret에 dockerconfigjson로 저장argocd, argocd-image-updater 는 같은 네임스페이스 (argocd) 에서 설치배포할 application의 네임스페이스와 분리 - (네임스페이스: test)image tag = 버전업, latest 이 아닌 "dev"라는 태그명으로 이미지 업데이트위와 같고, argocd-image-updater configMap은 아래처럼 작성했습니다.apiVersion: v1 kind: ConfigMap metadata: labels: app.kubernetes.io/name: argocd-image-updater-config app.kubernetes.io/part-of: argocd-image-updater name: argocd-image-updater-config namespace: argocd data: applications_api: argocd argocd.grpc_web: "true" argocd.insecure: "true" argocd.plaintext: "false" argocd.server_addr: <argocd-server EXTERNAL-IP> log.level: debug registries.conf: | registries: - name: bckrkube api_url: https://<azure>.azurecr.io prefix: <azure>.azurecr.io credentials: pullsecret:test/<registry-secret-name> ping: yes그리고 application의 annotation은 아래처럼 했습니다.argocd-image-updater.argoproj.io/image-list: <alias>=<registry>/<image-name>:dev argocd-image-updater.argoproj.io/<alias>.allow-tags: dev argocd-image-updater.argoproj.io/<alias>.pull-secret: secret:test/<secret> argocd-image-updater.argoproj.io/<alias>.update-strategy: digest혹시 이 설정중에 문제가 있을까요?
-
미해결쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2
aws ec2에 설치 방법
안녕하세요. 제가 쓰는 실습 환경이 윈도우와 맥 2가지 입니다.그래서 aws ec2에 ubuntu로 설치를 하려고 하는데 ubuntu로 실습 환경을 만들수 있는 가이드가 있을까요??
-
미해결개발자를 위한 쉬운 도커
dev container 종료
안녕하세요 강의 정말 잘 보고 있습니다!dev container 로 컨테이너 내에서 작업하는 실습까지 해보았는데요 그 이후로 재실행하거나 다른 파일을 열어도 전부 컨테이너 개발모드로 열립니다. 어떻게 되돌릴 수 있을까요?중단을 하니 터미널도 입력이 안되구요
-
해결됨개발자를 위한 쉬운 도커
code로 열기 가 안보여요
vscode는 기존에 깔려있어서 따로 설치하지 않았는데 삭제후 재설치 해야하나요?
-
미해결개발자를 위한 쉬운 도커
linux용 하위 window 기능 설정
wsl 패키지를 실행시키면 이런 오류가 뜹니다..이렇게 linux용 windows 하위시스템 부분이 체크되어 있는데도요ㅠ하위시스템 설치 완료되어 있다는데 왜 안되는 걸까요?
-
미해결쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2
블로그 작성 시 인강화면도 캡처해서 넣어도 될까요?
안녕하세요블로그 복습 시 인강 화면도 캡쳐해서 첨부하고 싶은데 가능할까요?
-
해결됨개발자를 위한 쉬운 도커
Docker Compose 실습 - leafy 에서 leafy-front 오류가 생깁니다.
안녕하세요. 윈도우11에서 학습중인데 섹션9. 도커 컴포즈 > Leafy 도커 컴포즈 실습에서 docker compose up -d 로 하면 leafy-front-1이 실행되지 않고 아래 로그가 나옵니다. exec /usr/local/bin/docker-entrypoint.sh: no such file or directory 구글링 해보니 윈도우 11 환경에서 나온다고 해서 git config --global core.autocrlf true 를 설정해주면 된다고 해서 해당 설정후에 소스를 다시 받고 빌드를 해도 같은 문제가 발생합니다. 혹시 해결 방법을 알수있을까요?
-
해결됨쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2
도커에 대해 자세히 몰라도 수강 가능한가요?
.
-
해결됨개발자를 위한 쉬운 도커
docker image latest 최신화 관련 문의
안녕하세요! 강의 너무 잘 듣고 있습니다! 섹션 3 docker registry 관련 강의 들으며 의문점이 있습니다! docker 는 image 를 다운로드 받을 때 먼저 로컬에 이미지가 있는지 찾고 없을 경우 docker registry 에서 다운받는다고 배웠습니다. docker image 를 다운로드 받을 때, 이미지명이 없을 경우 자동으로 latest 를 참조해서 다운받아진다고 알고 있는데, 만약 로컬에서 latest 버전의 이미지가 있는 동시에 도커 레지스트리에 새로운 버전의 이미지가 생성되었다면 이 때는 로컬의 latest 버전과 레지스트리에 있는 버전을 일치시키는 작업이 이뤄지는 건가요?
-
해결됨개발자를 위한 쉬운 도커
컨테이너의 커널 공유에 대한 의문점
가상화 기술의 사용 이유 중 하나는 실행 환경을 분리하여 서비스의 안정성을 높이는 것으로 알고 있습니다. 하지만 컨테이너는 하나의 커널을 공유합니다. 이는 빠르고 가볍다 라는 장점을 가져다주지만 이렇게 되면 하나의 서비스에서 장애가 발생했을 때 다른 서비스에도 영향을 미칠 수 있는 것 아닌지 궁금합니다. 결국 가상화의 장점을 가지지 못한것 아닐까하는 의문점이 듭니다 !컨테이너가 하나의 커널을 공유한채 실행된다면 프로세스와 크게 다른 부분이 없다고 생각하는데 프로세스와 컨테이너가 어떤 차이를 가지고 있는지 궁금합니다.
-
해결됨개발자를 위한 쉬운 도커
Windows 환경에서 섹션9 도커 컴포즈 - Leafy 도커 컴포즈 실행 오류 관련 문의
안녕하세요, 먼저 좋은 강의 만들어주셔서 감사합니다 ^^ 강의&실습을 진행하다가 Windows 10 Home 환경에서 실습 예제가 잘 실행되지 않는 문제가 있어서 문의드립니다. easydocker/leafy에서 07-compose 브랜치(docker-compose.yml 완성된 브랜치)로 체크아웃 후, docker compose up -d로 도커 컴포즈를 실행하면 front 쪽에서 아래와 같은 오류가 발생하고 컨테이너 실행이 되지 않습니다. exec /usr/local/bin/docker-entrypoint.sh: no such file or directory 혹시 해결방법이 있을지 문의드려요~ 윈도우 개행문자 처리 관련 문제일 것 같아서 git config --global core.autocrlf true 설정 후 다시 git clone을 받아도 안되고 구글링을 해봐도 딱히 해결방법이 안나오네요 ㅠㅠ 이미 완성된 07-compose 브랜치로 실행했을 때도 동작하지 않긴 하지만 혹시나 해서 docker-compose.yml & 프론트쪽 Dockerfile 부분 첨부드립니다. 감사합니다.
-
해결됨개발자를 위한 쉬운 도커
하나의 가상서버에 테스트 서버와 운영 서버를 관리하는 방법
보통 운영 서버와 테스트 서버를 관리할 때, 실무에서는 어떤 방식으로 관리하는지 궁금합니다! 저도 팀 프로젝트를 하면서 테스트 서버와 운영 서버를 분리시켜서 CI/CD를 구축하고 싶은데 어떤 방법이 맞는건지 잘 모르겠어서요! 두 개의 EC2를 사용하는건 너무 부담되는데 그럼 하나의 EC2에서 컨테이너 2개(테스트용, 배포용)를 각각 운영하는 방법이 맞는걸까요?
-
해결됨개발자를 위한 쉬운 도커
github actions 의 steps 중 platforms 제거
안녕하세요. GitHub Actions 관련 실습 중이었는데, 아래와 같은 에러가 발생했습니다. ERROR: failed to solve: node:14: no match for platform in manifest: not found154Error: buildx failed with: ERROR: failed to solve: node:14: no match for platform in manifest: not found 일단은 platforms 를 제거해서 해결했는데요.platforms 관련하여 검색해 알아보니 특정 OS 에 최적화하는 옵셔널한 값으로 넣으면 좋고 안넣어도 괜찮은 그냥 그런 것으로 소개되고 있더라고요 제 질문은 아래와 같은데요. platforms 를 지워서 GitHub Actions 가 성공했는데, 이렇게 실습해도 되나요?실무에서는 보통 platforms 를 작성하는게 관행인가요?
-
해결됨개발자를 위한 쉬운 도커
컨테이너 .exe 실행파일 사용 문의
안녕하세요,수업을 듣고 있는 수강생입니다. 컨테이너 학습 하면서, 의문점이 생겨 질의드립니다. HostPC에서 exe를 cp하여 컨테이너로 넣은 후, 해당 exe 파일을 컨테이너에서 실행시킬 수 있나요? 찾아보니 이미지는 마이크로소프트에서 받아오면 되더라구요. 환경은 HostPC는 window이고, 컨테이너도 window로 세팅하고 싶습니다. 만약 exe를 실행시킬 수 있다면 복수의 컨테이너를 실행시키고 싶은데 이를 docker compose로 구성하는게 효율적일까요?이론만으론 가능 할 것 같아 실습해보던 중 cp부터 에러가 발생해 가능성 여부를 알고싶습니다. 감사합니다.
-
해결됨개발자를 위한 쉬운 도커
도커 볼륨 경로 지정
각 서비스들 마다 볼륨을 지정하는 경로가 정해져 있나요?강의에서는 postgresql을 사용했고 /var/lib/postgresql/data 를 볼륨위치로 지정한것은 해당 위치가 table 내용을 저장하는 위치라서 그런건가요? 그럼 mysql 이나 redis등 다른 db의 경우는 각각 경로가 지정되어있는건지 궁금합니다. 그리고 어느 경로로 지정할지는 어떻게 알 수 있나요?
-
해결됨개발자를 위한 쉬운 도커
멀티 스테이지 빌드 COPY 명령어 질문
멀티 스테이지 빌드 강의에서 사용된 Dockerfile.multistage에 관한 질문입니다!두 번째 스테이지(openjdk:11-jre-slim)에서 사용된COPY --from=build /app/target/*.jar ./app.jar에서 해당 명령어를COPY --from=build /app/target/*.jar ./라고 작성하면 안되는건가요? COPY 명령어는 로컬 컴퓨터에 있는 파일을 도커 컨테이너 내부 파일 시스템에 복사하는 명령어로 알고 있고, 명령어에 입력되는 값은 복사에 필요한 디렉토리를 설정하는 것으로 알고 있습니다. 1) 도커 컨테이너의 루트 디렉토리에 app.jar 파일을 복사하는 용도라면 위와 같이 작성해도 되는게 아닌지 궁금합니다!2) 또한 COPY 명령어의 처음 값으로 나오는 /app/target/*.jar에서 *.jar가 .jar로 끝나는 모든 파일을 지칭하는 것인지 궁금합니다! Maven으로 빌드시 생성되는 결과물이 여러개여서 그런건가요?
-
해결됨개발자를 위한 쉬운 도커
여러 개의 컨테이너가 1개의 도커 볼륨에 접근할 때 일관성 문제
여러 개의 컨테이너가 하나의 볼륨을 공유할 수 있다는 특징에 따라 다음과 같이 작성했습니다. 도커 볼륨 생성docker volume create myvolume컨테이너A 생성docker run -d --name my-containerA -e POSTGRES_PASSWORD=password -v myvolume:/var/lib/postgresql/data postgres:13컨테이너B 생성docker run -d --name my-containerB -e POSTGRES_PASSWORD=password -v myvolume:/var/lib/postgresql/data postgres:13컨테이너A에서 새로운 DB 생성docker exec -it my-containerA psql -U postgres -c "CREATE DATABASE mydb;"컨테이너A에서 DB 조회docker exec -it my-containerA psql -U postgres -c "\list"컨테이너A에서 DB를 생성하고 조회하면 정상적으로 조회가 되는데, 컨테이너B에서 DB를 조회하면 mydb가 생성되지 않은 채로 보이네요.일관성 유지를 위해 두 컨테이너에서 정상적으로 조회가 될 줄 알았는데 컨테이너B에는 새로운 DB를 생성한 게 동기화가 안되네요..근데 새로운 컨테이너C를 생성하여 DB를 조회하면 정상적으로 조회가 됩니다. 위 내용을 정리하면 여러 개의 컨테이너가 1개의 도커 볼륨에 동시에 마운트하여 사용하면 동기화가 되지 않고, 새로운 컨테이너를 생성하여 도커 볼륨에 마운트하면 정상적으로 동기화가 됩니다.이런 경우에는 어떻게 해결하나요?
-
해결됨개발자를 위한 쉬운 도커
USER 명령어 질문
도커파일에서 USER 명령어가 RUN과 CMD 사이에 와야하는 이유가 무엇인가요? 그리고 USER 명령어가 사용되는 이유에 대해 잘 이해가 가질 않아서 그런데 리눅스의 어떤 개념을 공부해야 하나요?
-
미해결개발자를 위한 쉬운 도커
CMD 부분에 질문이 있습니다.
CMD ["nginx" "-g" "daemon off;"] 이 부분이 잘 이해가 안가서 찾아보니foreground로 실행되게 변경하는것, 초기 프로세스가 종료되지 않고 컨테이너가 계속 실행된다.로 나와있던데이게 잘 와닿지가 않습니다.. 우선 저 명령어는 생성한 nginx 컨테이너에서 실행되는거라고 이해했는데foreground로 실행된다는게 정확히 어떤 뜻인가요?컨테이너도 도커가 켜져있고 안건드리면 계속 돌아가지 않나요?