묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨비전공자도 이해할 수 있는 Docker 입문/실전
도커는 어떤 실무 환경에서 쓰이나요?
안녕하세요! 좋은 강의 감사드립니다.덕분에 도커를 쉽게 배울 수 있었고, 실무에 어떻게 활용될 수 있을지 궁금증이 생겨 질문드립니다.도커는 협업 환경에서 자주 쓰이나요?저는 아직 협업에서 도커를 직접 사용해본 경험은 없는데,만약 실제 협업 중 도커를 활용하게 된다면,배포 시 에러가 발생했을 때 디버깅이 오히려 어려울 수도 있지 않을까? 하는 고민이 있습니다.그래서 실무에서는 어떤 상황에서 도커를 자주 사용하는지 궁금합니다.도커는 왜 MSA 환경에 적합하다는 이야기가 많을까요?찾아보니 도커가 MSA(Microservices Architecture)에 잘 맞는다는 자료들을 종종 보았는데요,아마도 MSA는 여러 개의 서비스를 따로 운영해야 하다 보니,각 서비스의 환경 셋팅이나 배포가 많아서 그런 걸까요?
-
미해결비전공자도 이해할 수 있는 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 삭제하고 다시 진행해보면 되나요?
-
미해결비전공자도 이해할 수 있는 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 입문/실전
프론트와 백 통신
안녕하세요 선생님, 강의 잘 봤습니다.선생님이께서 알려주신대로, 제가 하고 있는 프로젝트를 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, 이미지명 두가지 방법으로 모두 삭제가 가능하다고 했는데, 혹시 안되는 이유가 뭘까요?
-
미해결비전공자도 이해할 수 있는 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 입문/실전
리눅스
안녕하세요! 수강전 질문 드립니다재성님 로드맵에서 도커 배우기 전에 리눅스를 배워야한다고 나와있는데 제가 아직 리눅스를 다뤄본적이 없어서 먼저 리눅스를 배우거 오는 것이 좋을까요??
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
여러개의 was를 compose를 활용하여 실행할때
여러개의 was를 compose를 활용하여 실행 할 때1개의 was만 update 해야하는 상황이 라면docker compose up --build -d 를 사용해도 괜찮은건가요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
구버전 명령어
최신 도커 버전부터(2~3년전?)는명령어가 달라진걸로 아는데구/신 버전 명령어를 혼합해서 사용해도 괜찮을까요?조금 헷갈리는 부분도 있네요
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
nginx를 모든 컨테이너에 설치를 해줘야하나요??
아직 강의를 다 듣진않았지만...nginx에서 각 컨테이너로 프록시를 해주려면어떻게 해야하나요?혹시 강의내에 내용이 있을까요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
AWS 배포 시 docker-compose.yml 관리 방법 질문입니다.
현재 강의에서는 aws 인스턴스 에서 직접 compose.yml을 작성하는데 제가 현재 spring boot 프로젝트 루트 경로에 compose.yml을 구현해뒀어도 프로젝트 빌드시에는 yml이 포함되지 않아서 강의와 같이 인스턴스가 직접 생성해줘야하는 지 궁금합니다. 그리고 나중에 ci/cd를 하게 되면 github Actions같은 CI/CD 도구를 이용해야 yml파일이나 .env이런 파일을 직접 인스턴스에 구현하지 않아도 되는 것이 맞는 지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
sudo가 안먹혀요
3강 진행 중에 sudo lsof -i:3306 명령어를 사용했는데 ""Sudo가 이 컴퓨터에서 사용하지 않도록 설정되어 있습니다. 사용하도록 설정하려면 으로 이동하세요. Developer Settings page 설정 앱의"" 이렇게 나와서 시작을 못하고 있습니다. 그리고 다른 질문인데 현재 프로젝트를 하고 있는데 db를 mysql을 사용하고 있는 상황이라 만약 실습을 위해서 포트를 끄면 프로젝트할때 영향이 가는지도 궁금합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
볼륨을 쓰는 이유
4분쯤에 "볼륨을 제대로 잘 쓰려면 호스트의 디렉토리 경로를 빈 디렉토리로 만들던, 아니면 존재하지 않는 디렉토리로 만들어 놔야 이 컨테이너에 저장돼 있던 파일들을 이리로 붙여넣기를 해버립니다.이렇게. 호스트에 파일이 이미 있으면 이렇게 컨테이너 기존에 있던 폴더 다 지워버리고 복사가 됩니다."라고 하셨습니다.근데 볼륨을 쓰는 이유가 호스트에 파일을 저장하여 mysql 컨테이너를 변경해도 저장된 값을 쓰게 하려는 것인데 호스트에 있는 파일을 매번 지워야한다면 볼륨을 쓰는 이유가 없는 거 아닌가요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
공유 폴더가 덮어씌워지는 것에 대한 질문
안녕하세요. 강의 잘 듣고 있습니다. docker run -e MYSQL_ROOT_PASSWORD=test123 -d -p 3306:3306 -v /own/dir:/var/lib/mysql mysql명령어를 통해 1차적으로 도커 볼륨을 이용해 컨테이너를 생성한 후에, 해당 컨테이너를 삭제하였습니다.(dir 폴더는 따로 생성하지 않았고, 컨테이너 생성 시 명령어를 통해 생성되게끔 하였습니다) 이후 같은 명령어로 컨테이너를 생성하게 되면, 해당 폴더가 호스트 컴퓨터에 존재하므로 해당 호스트 컴퓨터 폴더 안의 파일들이 컨테이너 안의 /var/lib/mysql/ 안에 덮어씌워지게 되기 때문에 서로 공유가 가능한 것. 제가 이해한 게 맞는지 확인 부탁드립니다!
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
docker volume 생성 이후 container 종료
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pwd1234 -v /mnt/c/Users/jsill/Desktop/docker-mysql/mysq l_data:/var/lib/mysql mysql 위와 같이 docker 를 실행하면 처음엔 실행이 잘되다가 10초 정도 이후에 실행이 종료됩니다. log를 조회해도 매번 다른 오류가 발생합니다.mysqld: Table 'mysql.plugin' doesn't exist Could not open the mysql.plugin table. Please perform the MySQL upgrade procedure.OS는 윈도우 사용중입니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
컨테이너 포트 설정 질문
안녕하세요 강의 잘 듣고 있습니다 감사합니다docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=test123 -d mysql이렇게 컨테이너를 실행한 후, datagrip을 통해서 url: jdbc:mysql://localhost:3306 로 정상 접속되는 것 확인했습니다. 하지만,docker run -p 3306:8888 -e MYSQL_ROOT_PASSWORD=test123 -d mysql이렇게 실행하고 동일한 database url로 접속 시도하면 되질 않습니다. 3306으로 접속 시도하면 컨테이너 내부의 8888 mysql port와 매핑되어 있기 때문에 접속이 되어야하지 않나요?호스트, 컨테이너 포트를 동일하게 설정해야만 컨테이너 내부 mysql db에 접속이 가능한 이유가 잘 이해되지 않습니다.답변 부탁드립니다!