ubuntu@ip-172-31-44-131:~$ docker run -d -p 8080:8080 kimoon515/neo Unable to find image 'kimoon515/neo:latest' locally latest: Pulling from kimoon515/neo docker: no matching manifest for linux/amd64 in the manifest list entries. See 'docker run --help'. 이런 에러가 발생되는데 어떻게 해야할가요?
위 도표를 보여주시면서 설명을 해주실때, 10시 정각에 스레드 1이 쿠폰 발급 로직을 시작 10시 2분에 완료가 된다면, 스레드 2는 스레드 1의 작업이 모두 종료될때까지 기다렸다림. 스레드 2는 10시 2분에 작업을 시작 이렇게 설명해주셨는데, 이게 잘 이해가 안됩니다... 제 생각에는 아래와 같이 10시에 동시에 처리되는 흐름이 되어야 할 것 같은데요... 즉, 스레드2는 쿠폰 생성 로직이 끝날 때까지 기다리지 않고, 스레드 1이 쿠폰 발급 로직을 수행 중이라도 스레드 2는 곧바로 Redis 값을 받고 독립적으로 로직을 수행 할 수 있을 것 같은데 아닌가요?? 레디스 자체는 싱슬스레드이니 레디스를 찌를때는 무조건 하나씩만 들어가겠지만 스레드 1은 레디스에 찌르고 값을 받아온 후 본인의 비즈니스 로직 수행할때 스레드2가 레디스 서버에 찌를 수는 없는건가요? 제가 이렇게 이해한 부분이 잘못된 것인지, 아니면 제가 강의 설명을 오해한 것인지 혼란스러워 질문을 드리게 되었습니다.
안녕하세요! 컨테이너를 처음 실행했을 때는 컨테이너 레이어에는 아무 파일도 존재하지 않는건가요? 만약 처음 컨테이너 레이어에 아무 파일도 존재하지 않는다면 docker -it bin/bash로 컨테이너 내부로 들어가서 보는 파일들은 이미지의 파일들이고, 그 이미지의 파일을 수정하면 컨테이너 레이어로 해당 파일을 복사한 뒤에 수정사항을 반영하는 건가요?(CoW)
강의처럼 myDB라는 DB를 만들고 컨테이너 삭제 후, 다시 실행했을때 그 DB가 남아있는지 확인해봤는데 안남아있네요. 아래의 로그는 제가 했을때의 로그입니다! d----- 2025-04-06 오후 11:25 docker-mysql PS C:\Users\icb16\dockervolume> cd docker-mysql PS C:\Users\icb16\dockervolume\docker-mysql> docker run -e MYSQL_ROOT_PASSWORD=password123 -v C:\Users\icb16\dockervolume\docker-mysql -d mysql 24f951c78cbf0dab6bea6b4b8deaf8f29781ae613b3cad782bbf569e44acbda3 PS C:\Users\icb16\dockervolume\docker-mysql> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 24f951c78cbf mysql "docker-entrypoint.s…" 12 seconds ago Up 11 seconds 3306/tcp, 33060/tcp optimistic_elion PS C:\Users\icb16\dockervolume\docker-mysql> docker rm -f 24f951 24f951 PS 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 mysql 068022ff288d2e9b7a4605e1da688688a43a14c9e0c1d31041d86067466d62a2 PS C:\Users\icb16\dockervolume\docker-mysql> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 068022ff288d mysql "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp friendly_hypatia PS C:\Users\icb16\dockervolume\docker-mysql> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 068022ff288d mysql "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp friendly_hypatia PS C:\Users\icb16\dockervolume\docker-mysql> docker exec -it 0680 docker: 'docker exec' requires at least 2 arguments Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] See 'docker exec --help' for more information PS C:\Users\icb16\dockervolume\docker-mysql> docker exec -it 0680 bash bash-5.1# ls '\var\lib\mysql' bin dev etc lib media opt root sbin sys usr afs boot docker-entrypoint-initdb.d home lib64 mnt proc run srv tmp var bash-5.1# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 9.2.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. 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> ^C mysql> ^C mysql> ^C mysql> exit Bye bash-5.1# exit exit PS C:\Users\icb16\dockervolume\docker-mysql> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 068022ff288d mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp friendly_hypatia PS C:\Users\icb16\dockervolume\docker-mysql> docker rm -f 068 068 PS C:\Users\icb16\dockervolume\docker-mysql> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES PS 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 mysql dcb75ed6d3fab0a0a320869e7728179f58299ec0e43b948408c599e8c9ecf089 PS C:\Users\icb16\dockervolume\docker-mysql> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dcb75ed6d3fa mysql "docker-entrypoint.s…" 14 seconds ago Up 13 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp zealous_spence PS C:\Users\icb16\dockervolume\docker-mysql> docker exec -it dcb7 docker: 'docker exec' requires at least 2 arguments Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] See 'docker exec --help' for more information PS C:\Users\icb16\dockervolume\docker-mysql> docker exec -it dcb7 bash bash-5.1# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 9.2.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. 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>
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]네 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요]네 ( https://inf.run/DvsRD ) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://inf.run/Ljaer ) [질문 하기] 다했는데 계속 같은 에러가 나옵니다. Command: ["startvm", "4a4d5c0f-1f65-4098-b0c7-4e8fda8925ff", "--type", "headless"] Stderr: VBoxManage.exe: error: The virtual machine 'cp-k8s-1.30.0(github_SysNet4Admin)' has terminated unexpectedly during startup with exit code 1 (0x1). More details may be available in 'C:\Users\myhr1\VirtualBox VMs\k8s-U1.30.0-ctrd-1.6(github_SysNet4Admin)\cp-k8s-1.30.0(github_SysNet4Admin)\Logs\VBoxHardening.log' VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap, interface IMachine 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. 이방법은 무엇인가요
안녕하세요! 도커는 처음 접해보는데 강의 정말 잘 듣고 있습니다! 이미 로컬에 DB가 설치가 되어 있는 상태면 강사님께서는 호스트의 DB들을 죽인? 후 포트 매핑을 하셨는데 혹시 호스트 포트 번호를 다르게 매핑 해도 되나요? 예를 들어서 docker -run -p 3307:3306 -d mysql 이런 식이거나 docker -run -p 6380:6379 -d redis 이렇게요!
안녕하세요! 강의 유익하게 듣고 있는 수강생입니다. 컨테이너 가상화 설명에서 궁금증이 생겨 글 남깁니다. (강의 장면 캡쳐가 불가하여 유사 그림으로 대체합니다!!) 도커는 호스트 OS의 커널을 바로 사용한다는 장점이 있다고 이해했습니다. 이때 여기서 호스트 OS가 리눅스라고 명시되어있는데 mac, windows를 사용하는 일반 사용자들도 호스트 os가 리눅스로 적용되는 것일 까요?? 해당 내용을 찾아보니 도커를 사용할 때는 리눅스 커널이 필수적으로 필요해서 가상화된 Linux를 내부적으로 사용한다고 확인했습니다. 이 내용을 리눅스 환경이 아닌경우 도커 내부에 리눅스가 가상화 기술로 적용되어 있다고 이해하는 것이 맞을까요?? 내장되어 있는 것이 맞다면 컨테이너 별로 리눅스가 별도로 포함되는것인지, 도커위에 하나의 리눅스OS를 갖고 있는 것인지 질문드리고 싶습니다! 유익한 강의 정말 감사드립니다 😀
강의를 들으면서 프로젝트로 실습해보다가 궁금한 점이 생겨 질문드립니다! 강의에서는 main 브랜치에 push가 일어나는 것이 트리거가 되는 경우를 설명해주셨습니다. 만약에 main 브랜치 하위에 기능별로 브랜치를 나누어서 feature/login, feature/post 식으로 브랜치가 존재하며 프론트엔드 React 코드, 백엔드 Spring 코드의 별도 구분 없이 각각의 브랜치에 같이 존재한다면 백엔드 코드만 ec2에 deploy 되도록 설정하는 방법이 있을까요?
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요] 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요] (https://www.inflearn.com/blogs/1719) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://inf.run/Ljaer ) [질문 하기] 안녕하세요. M4 pro 에서 vagrant로 테스트 환경을 설치하려고 했지만 결국은 모두 실패하였습니다. 그래서 기존 OVA 파일로 환경 구성을 하려고 했지만 해당 파일이 intel 용으로 만들어져 있어서 사용하지 못하고 있습니다. arm 용으로 생성된 ova 파일은 없나요?
안녕하세요. CICD강의 잘보고있습니다. [실습] 컨테이너 기반 + 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법 까지 잘 진행해서 배포까지 완료했습니다. scripts > start-server.sh 에서 질문이 있는데요 docker pull {ECR Repository 주소} /instagram-server:latest 여기서 에러가 나서 정상적인 docker image를 pull받지 못합니다. 제가 작성한 코드입니다. docker pull {EC2소유자}.dkr.ecr.ap-northeast-2.amazonaws.com/github-actions:latest 발생 에러 코드입니다. [stderr]Error response from daemon: Head " https:// {EC2소유자} .dkr.ecr.ap-northeast-2.amazonaws.com/v2/github-actions/manifests/latest ": no basic auth credentials 감사합니다.
강의에서 나오는 forms.py 파일을 만들어서 커스텀폼을 만드니 A user with that username already exists. username 이 이미 존재하는 에러가 계속해서 발생 (다른 수강생분들도 겪은 에러인듯) 장고 기능이 추가된 건지는 몰라도 PasswordChangeView 를 활용함 views.py class AccountUpdateView(PasswordChangeView): form_class = PasswordChangeForm template_name = 'accountapp/update.html' success_url = reverse_lazy('accountapp:detail') 여기서 success_url 이 정적 url 로 pk 파라미터 값을 전달해주지 못하는 문제가 있음 그래서 수정된 코드는 class AccountUpdateView(PasswordChangeView): form_class = PasswordChangeForm template_name = 'accountapp/update.html' def get_success_url(self): return reverse('accountapp:detail', kwargs={'pk': self.request.user.pk}) 2025년 3월 31일 기준 1) 비밀번호 변경 기능의 기본 View,Form 있음 (PasswordChangeView, PasswordChangeForm) 2) 비밀번호 변경 후 hello_world 페이지로 리다이렉트 시킬거면 success_url = 'accountapp:hello_world' 3) 로그인한 계정의 detail 페이지로 이동한다면 마지막 코드 참고
1) 앵커태그로 로그인, 로그아웃 구현하고 기존 로그인 되어있던 상황에서 로그아웃을 진행하니 에러가 발생 (405 에러) 2) 장고의 LogoutView 는 POST 요청만 허용함 ?next={{ request.path }} 는 GET 요청으로 logout 누르면 /logout?next=/account/hello_world/ 로 GET 요청하게됨 따라서, 정상적으로 로그아웃뷰를 사용하려면 1) 로그아웃 링크를 POST 요청으로 보내는 폼으로 변경 2) LogoutView 의 설정을 변경하여 GET 요청도 허용 보안상 2는 권장되지 않는 사항이며, 1의 방법으로 처리 {% else %} <form action="{% url 'accountapp:logout' %}" method="post" style="display: inline;"> {% csrf_token %} <button type="submit" class="btn btn-link" style="text-decoration: none; padding: 0; margin: 0;"> <span>Logout</span> </button> </form> {% endif %} 주요 변경사항 1) 로그아웃 앵커 태그를 form 태그로 변경 2) 폼의 method 를 post 로 지정 3) 이에따라 csrf 토큰 추가 추가로 logout 이후 redirect 경로를 설정해줘야하는데, 이는 pragmatic/settings.py 에서 설정 # Logout Redirect URL LOGOUT_REDIRECT_URL = '/account/hello_world/' 마지막 머물렀던 페이지에서 로그아웃이 되게 하고 싶다면, 커스텀 로그아웃뷰를 만들어야하는데, 보안상 권장되지 않는다고 함. +++ 왜인지는 모르겠으나 로그인도 ?next={{ request.path }} 를 먹지 않아서 pragmatic/settings.py 에서 로그인 리다이렉트 URL 을 추가하여 처리하였음 # Login Redirect URL LOGIN_REDIRECT_URL = '/account/hello_world/' # Logout Redirect URL LOGOUT_REDIRECT_URL = '/account/hello_world/' 이 경우 html 템플릿에서 next 를 사용할 필요 없고 사이트 어디서 로그인하던 /account/hello_world 로 리다이렉트 시킴