묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
Next.js 관련 질문
안녕하세요! Next.js 관련해서 3000번 포트는 이미 사용 중이라 3001번 포트가 사용 가능하다고 나오더라구요. PS C:\Users\USER\Documents\my-app> npm run dev> my-app@0.1.0 dev> next dev --turbopack⚠ Port 3000 is in use, using available port 3001 instead. ▲ Next.js 15.3.0 (Turbopack)- Local: http://localhost:3001이건 혹시 그 전에 실습한 node 때문인건가요? ps로 조회하면 "node dist/main.js"가 up 상태입니다! 3000번 포트로 next.js 확인하고 싶으면 node 삭제하고 다시 진행해보면 되나요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
dockershim 사용관련문의
쿠버네티스에서는 CRI규격에 맞춰진 dockershim이 있으니까 docker를 그대로 쓸수있다고 답변을 한다고 하셨습니다.그게 1.5버전부터 dockershim이 들어갔구요. 그런데 그림을 보면 cri에 잇는 dockershim은 docker컨테이너와의 연결을 위해 필요한건데강의 그림에서는 1.23이후로 dockershim이 deprecated되면 docker랑 화살표 그려지는 cri구현부부분에 dockershim이 빠지는건데 어떻게 1.24버전부터는 docker 컨테이너 런타임과는 연동을 할수가 없는거 아닌지요? 헷갈리네요
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
런타임측 contribution
구현부는 쿠버네티스 프로젝트에 있는것이고, 이 프로젝트가 오픈소스이니까 각각의 런타임 측에서 docker나 rkt에서쿠버네티스 프로젝트에 소스를 contribution 하는 형태이다.라고 했는데쿠버네티스 프로젝트에 각 런타임쪽에서 소스를 만들어서...쿠버네티스 프로젝트로 기부했다는 말씀이신가요? 이해가 잘~~
-
해결됨AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
ECS 환경에서의 ELB 간헐적 504에러
해당 강의를 보고 사내에서 개발서버 인프라구성을 변경중입니다. 해결되지 않는 이슈가 있어서 질문 드립니다. AWS ECS로 배포진행하며, FARGATE가 아닌 EC2(arm64)로 현재 배포중입니다.로드밸런서(80(443으로 redirect), 443(타겟그룹 전달)) -> 타겟그룹(IP형태의 타겟그룹) -> ECS Task네트워크 모드는 awsvpc를 사용했으며, task는 private subnet에서 nat gateway와 정상적으로 연결됨을 확인하였습니다. 개발서버로 일부 기능만 내부적으로 테스트 중이라, 트래픽이 거의 없고, task의 CPU와 메모리 사용률은 30%이하를 유지중입니다. 대다수의 트래픽이 정상적으로 통과하지만, 특정 API 호출이 아닌 전반적으로 간헐적으로 로드밸런서에서 504 gateway timeout 이 발생합니다. (타겟그룹엔 정상적으로 healthy 상태로 등록되어 있습니다) ex) 해당 기간내에 health-check 요청만 보내도, 일반적으로 잘 되지만 한번씩 헬스체크 요청조차 504 에러가 발생 기본적으로 잘 접속되지만 간헐적으로 발생하기에 네트워크설정쪽인 NACL이나 보안그룹의 문제는 아닐 것이라고 생각됩니다. nat gateway가 1개이긴하지만 트래픽이 매우 적어 충분할 것 같은데 혹시 가용영역별로 배치를 진행해야 하는걸까요?혹시 이와 같은 사례를 경험하셨거나 해결방법에 대해 조언을 구하고자 합니다. 운영에서는 아직 ECS를 적용하지않아 EC2로 배포중인데, 해당 로드밸런서는 모니터링에서 504에러가 발생하지 않은 것으로 확인됩니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
파일복사 윈도우환경 질문
PS C:\Temp\docker-practice> docker build -t my-server .[+] Building 1.7s (6/6) FINISHED docker:desktop-linux => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 121B 0.0s => [internal] load metadata for docker.io/library/ubuntu:latest 1.6s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load build context 0.0s => => transferring context: 2B 0.0s => CANCELED [1/2] FROM docker.io/library/ubuntu:latest@sha256:1e622c5f073b4f6bfad6632f2616c7f59ef256e96fe78bf6a595d1dc4376ac02 0.0s => => resolve docker.io/library/ubuntu:latest@sha256:1e622c5f073b4f6bfad6632f2616c7f59ef256e96fe78bf6a595d1dc4376ac02 0.0s => ERROR [2/2] COPY app.txt /app.txt 0.0s------ > [2/2] COPY app.txt /app.txt:------Dockerfile:3-------------------- 1 | FROM ubuntu 2 | 3 | >>> COPY app.txt /app.txt 4 | 5 | ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] 이런 오류가 뜹니다.그래서 app.txt를 직접 파일에가서 만들면 안뜨긴하는데 맥이랑 환경이 달라서 그런걸까요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
ENTRYPOINT 오류
안녕하세요.베이스 이미지 생성할 때 ENETRYPOINT 입력하여도 계속 종료상태로 선생님과 비교해보니 COMMAND 부분이 'jshell'로 나와서 확인했더니 이렇게 조회되었습니다."Entrypoint": null,Cmd": [ "jshell"시도FROM openjdk:17-jdk ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] CMD [ ]CMD [] 입력 후 RUN 실행되었는데,node 컨테이너 내부 들어가서 -v 입력 시 bash-4.4# node -vbash: node: command not found이렇게 조회가 됩니다.. (windows vscode로 하고 있습니다.)
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
docker hub 관련 질문(환경변수 관련)
안녕하세요. 볼륨 마지막 실습 강의 듣고 docker hub 관련해서 궁금한 점이 생겼습니다. 도커허브에서 mongo 설명이 아래처럼 적혀있는데, 실습 시 MONGO_INITDB_ROOT_USERNAME, MONGO_INITDB_ROOT_PASSWORD 입력을 하는 이유는 보안에 대한 환경설정을 따로 하신 것일까요?(보안과 관련된 환경변수 설정은 필수가 아니어도 대부분 하는 편인지 궁금합니다 .. : )) How to use this imageStart a mongo server instance$ docker run --name some-mongo -d mongo:tag
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
App 배포하기 (helm) - 2232 에서 helm자동인식불가
argocd에서 kubeclt배포후 helm배포하기를 해보려는데 git을 선택하면 자동으로 하단에 helm이 선택된다고 하셨는데...저는 제 경로나 강사님 git 경로 모두 해봐도..자동으로 인식이 되질 않네요...ㅠㅠ혹시 이유를 확인볼 방법이 있을까요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
프론트와 백 통신
안녕하세요 선생님, 강의 잘 봤습니다.선생님이께서 알려주신대로, 제가 하고 있는 프로젝트를 local환경에서 compose를 통해 성공적으로 띄웠습니다.근데 여기서 궁금한 점이 mysql 이나 redis와 같이 spring boot에 연결하는 건 service 이름을 통해 요청을 하는 반면에, 프론트와 백이 통신할 때는 localhost를 사용해서 통신을 합니다.어떻게 다른 컨테이너에 띄웠는데 localhost로 통신이 되는 지 궁금합니다.(프론트는 vue.js를 node를 이용해서 정적파일로 build 후 nginx 이미지로 만들었습니다.)
-
해결됨비전공자도 이해할 수 있는 Docker 입문/실전
도커 볼륨을 사용하는 경우에 대해 질문 있습니다.
안녕하세요!강의 실습에서와 같이 바인드 마운트를 사용하는 경우에 1. 호스트 디렉토리 경로에 디렉토리가 이미 존재하는 경우, 호스트 디렉토리의 파일을 컨테이너 경로에 덮어씌움2.호스트 디렉토리 경로에 디렉토리가 존재하지 않는 경우, 디렉토리를 만들고 컨테이너 경로의 파일들을 호스트 경로에 복사함. 이 두 가지 경우로 나뉘어서 복사되는 규칙이 달라지는데 도커 볼륨을 사용할 때도 동일한 규칙이 적용되나요??도커 볼륨에다가 직접 디렉토리를 생성하는 경우는 없을 것 같아서 최초 처음 컨테이너에 볼륨을 연결하는 경우에만 2번으로 동작할 것 같고, 이후에 동일한 볼륨을 다른 컨테이너에 연결할 때는 1번처럼 동작할 것 같은데 맞을까요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
이미지 삭제 시 에러
windows powershell로 진행중입니다. 컨테이너 중단 -> 삭제 -> 이미지 삭제 진행 시 docker image rm 이미지id 입력하면 Error response from daemon: No such image ~ 오류가 뜹니다. 강의에서는 이미지 id, 이미지명 두가지 방법으로 모두 삭제가 가능하다고 했는데, 혹시 안되는 이유가 뭘까요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
k8s 세팅관련하여 질문드립니다
설치 과정에서는 문제 없는데 세션연결이랑 대시보드 접속이 안되네요 ip상에 문제가 있는걸까요?와이파이로 접속된 노트북으로 했는데 공유기로 할당안받은 ip로 해서 문제인걸까요?
-
해결됨개발자를 위한 쉬운 도커
컨테이너 레이어 질문 있습니다.
안녕하세요!컨테이너를 처음 실행했을 때는 컨테이너 레이어에는 아무 파일도 존재하지 않는건가요?만약 처음 컨테이너 레이어에 아무 파일도 존재하지 않는다면 docker -it bin/bash로 컨테이너 내부로 들어가서 보는 파일들은 이미지의 파일들이고, 그 이미지의 파일을 수정하면 컨테이너 레이어로 해당 파일을 복사한 뒤에 수정사항을 반영하는 건가요?(CoW)
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
volume 관련 부분 mysql로 실행
강의처럼 myDB라는 DB를 만들고 컨테이너 삭제 후, 다시 실행했을때 그 DB가 남아있는지 확인해봤는데 안남아있네요.아래의 로그는 제가 했을때의 로그입니다!d----- 2025-04-06 오후 11:25 docker-mysqlPS C:\Users\icb16\dockervolume> cd docker-mysqlPS C:\Users\icb16\dockervolume\docker-mysql> docker run -e MYSQL_ROOT_PASSWORD=password123 -v C:\Users\icb16\dockervolume\docker-mysql -d mysql24f951c78cbf0dab6bea6b4b8deaf8f29781ae613b3cad782bbf569e44acbda3PS C:\Users\icb16\dockervolume\docker-mysql> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES24f951c78cbf mysql "docker-entrypoint.s…" 12 seconds ago Up 11 seconds 3306/tcp, 33060/tcp optimistic_elionPS C:\Users\icb16\dockervolume\docker-mysql> docker rm -f 24f95124f951PS C:\Users\icb16\dockervolume\docker-mysql> docker run -e MYSQL_ROOT_PASSWORD=password123 -d -p 3306:3306 -v C:\Users\icb16\dockervolume\docker-mysql\mysql_data:\var\lib\mysql -d mysql068022ff288d2e9b7a4605e1da688688a43a14c9e0c1d31041d86067466d62a2PS C:\Users\icb16\dockervolume\docker-mysql> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES068022ff288d mysql "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp friendly_hypatiaPS C:\Users\icb16\dockervolume\docker-mysql> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES068022ff288d mysql "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp friendly_hypatiaPS C:\Users\icb16\dockervolume\docker-mysql> docker exec -it 0680docker: 'docker exec' requires at least 2 argumentsUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]See 'docker exec --help' for more informationPS C:\Users\icb16\dockervolume\docker-mysql> docker exec -it 0680 bashbash-5.1# ls'\var\lib\mysql' bin dev etc lib media opt root sbin sys usrafs boot docker-entrypoint-initdb.d home lib64 mnt proc run srv tmp varbash-5.1# mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 9Server version: 9.2.0 MySQL Community Server - GPLCopyright (c) 2000, 2025, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases-> ;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.01 sec)mysql> create database myDB-> ;Query OK, 1 row affected (0.01 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || myDB || mysql || performance_schema || sys |+--------------------+5 rows in set (0.00 sec)mysql> ^Cmysql> ^Cmysql> ^Cmysql> exitByebash-5.1# exitexitPS C:\Users\icb16\dockervolume\docker-mysql> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES068022ff288d mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp friendly_hypatiaPS C:\Users\icb16\dockervolume\docker-mysql> docker rm -f 068068PS C:\Users\icb16\dockervolume\docker-mysql> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESPS C:\Users\icb16\dockervolume\docker-mysql> docker run -e MYSQL_ROOT_PASSWORD=password123 -d -p 3306:3306 -v C:\Users\icb16\dockervolume\docker-mysql\mysql_data:\var\lib\mysql -d mysqldcb75ed6d3fab0a0a320869e7728179f58299ec0e43b948408c599e8c9ecf089PS C:\Users\icb16\dockervolume\docker-mysql> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESdcb75ed6d3fa mysql "docker-entrypoint.s…" 14 seconds ago Up 13 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp zealous_spencePS C:\Users\icb16\dockervolume\docker-mysql> docker exec -it dcb7docker: 'docker exec' requires at least 2 argumentsUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]See 'docker exec --help' for more informationPS C:\Users\icb16\dockervolume\docker-mysql> docker exec -it dcb7 bashbash-5.1# mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 9Server version: 9.2.0 MySQL Community Server - GPLCopyright (c) 2000, 2025, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases-> ;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)mysql>
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
백엔드, 프론트엔드가 나뉘는 경우
안녕하세요 선생님, 명강의 잘 듣고 있습니다.만약 벡엔드와 프론트엔드가 나뉘는 경우라면,하나의 EC2에 벡엔드 이미지, 프론트 이미지를 각각 컨테이너에 띄워서 연동해주는 방식으로 만들면 될까요?
-
해결됨비전공자도 이해할 수 있는 Docker 입문/실전
이미 로컬에 mysql/redis가 설치되어 있을 때 포트매핑
안녕하세요! 도커는 처음 접해보는데 강의 정말 잘 듣고 있습니다! 이미 로컬에 DB가 설치가 되어 있는 상태면 강사님께서는 호스트의 DB들을 죽인? 후 포트 매핑을 하셨는데 혹시 호스트 포트 번호를 다르게 매핑 해도 되나요?예를 들어서 docker -run -p 3307:3306 -d mysql 이런 식이거나 docker -run -p 6380:6379 -d redis 이렇게요!
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
리눅스
안녕하세요! 수강전 질문 드립니다재성님 로드맵에서 도커 배우기 전에 리눅스를 배워야한다고 나와있는데 제가 아직 리눅스를 다뤄본적이 없어서 먼저 리눅스를 배우거 오는 것이 좋을까요??
-
해결됨개발자를 위한 쉬운 도커
컨테이너 가상화 호스트 OS
안녕하세요! 강의 유익하게 듣고 있는 수강생입니다.컨테이너 가상화 설명에서 궁금증이 생겨 글 남깁니다.(강의 장면 캡쳐가 불가하여 유사 그림으로 대체합니다!!) 도커는 호스트 OS의 커널을 바로 사용한다는 장점이 있다고 이해했습니다. 이때 여기서 호스트 OS가 리눅스라고 명시되어있는데 mac, windows를 사용하는 일반 사용자들도 호스트 os가 리눅스로 적용되는 것일 까요??해당 내용을 찾아보니 도커를 사용할 때는 리눅스 커널이 필수적으로 필요해서 가상화된 Linux를 내부적으로 사용한다고 확인했습니다. 이 내용을 리눅스 환경이 아닌경우 도커 내부에 리눅스가 가상화 기술로 적용되어 있다고 이해하는 것이 맞을까요??내장되어 있는 것이 맞다면 컨테이너 별로 리눅스가 별도로 포함되는것인지, 도커위에 하나의 리눅스OS를 갖고 있는 것인지 질문드리고 싶습니다!유익한 강의 정말 감사드립니다 😀
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
질문드립니다( headless service)
안녕하세요 강사님해당 강의에서 headless service 통신 테스트를 해봤는데요deployment + headless service 상황에서pod내부에 아래 명령어를 했는데 찾지 못한다고하는데nslookup [pod명].[svc명].[ns].svc.cluster.local 혹시 statufulset만 가능한건가요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
소스파일이 안가져와지네요?
jenkinsfile을 보면코드가 주신대로 아래와 같고요여기에서 [소스파일 체크아웃] 부분이 지나면 jenkins디렉토리 workspace 밑으로 해당 소스파일이 가져와서 폴더가 생성되어야 하는게 아닌지..궁금합니다. 폴더가 일단 생성이 안되구요...맨밑에 이미지 추가한것처럼 helm쪽 파일만 릴리즈파일 체크아웃통해 받아진것 같아요.또한가지는 [소스빌드] 스텝인데 echo로만 그냥 찍는거지 실제 빌드하는거 아니죠?체크아웃자체도 안받아져서 빌드도 안될것 같구요.마지막으로 [컨테이너빌드] cp부분도 echo로 찍는부분이지 실제 copy명령어를 실행하는것도 아니고..그런데 docker build 명령어는 실제로 하는데...위에서 빌드도 문자열만 찍는거고 ...소스도 안받아졌는데 어떻게 docker build는 또 실제로 할수잇는지도 궁금합니다. stage('소스파일 체크아웃') { steps { // 소스코드를 가져올 Github 주소 git branch: 'main', url: 'https://inf.run/M45Zm' } } stage('소스 빌드') { steps { // 755권한 필요 (윈도우에서 Git으로 소스 업로드시 권한은 644) echo "chmod +x ./gradlew" echo "gradle clean build" } } stage('릴리즈파일 체크아웃') { steps { checkout scmGit(branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: "/${CLASS_NUM}"]]]], userRemoteConfigs: [[url: "${GITHUB_URL}"]]) } } stage('컨테이너 빌드') { steps { // jar 파일 복사 echo "cp ./build/libs/app-0.0.1-SNAPSHOT.jar ./${CLASS_NUM}/build/docker/app-0.0.1-SNAPSHOT.jar" // 도커 빌드 echo "docker build -t ${DOCKERHUB_USERNAME}/api-tester:v1.0.0 ./${CLASS_NUM}/build/docker" } }