authentication에서 클러스터 2개를 활용해서 kubectl로 context 변경하시는데
미해결
대세는 쿠버네티스 (초급~중급편)
이거 기존에 만든 클러스터 외에 별도 VM 띄워서 클러스터 하나 더 만드신거죠??
- docker
- kubernetes
176만명의 커뮤니티!! 함께 토론해봐요.
미해결
대세는 쿠버네티스 (초급~중급편)
이거 기존에 만든 클러스터 외에 별도 VM 띄워서 클러스터 하나 더 만드신거죠??
해결됨
[DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기
강의 교안은 없는 건가요? 못잧겠어요. 어느경로에 있나요 ?
미해결
개발자를 위한 쉬운 도커
안녕하세요 궁금증이 생겨 질문드립니다! 강의 중 엔진엑스로 만든 이미지가 있는데 index.html이 다른 A가 있고 B가 있다라는 예시가 있었습니다. 이때 아래와 같이 설명해주셨는데요 이미지를 공유해서 사용하는거랑 컨테이너 생성속도랑 어떻게 연관이 있는건지 잘 이해가 가지 않아 질문드립니다. 동일한 이미지로 컨테이너를 아주 많이 만들어도 이 이미지로 실행된 모든 컨테이너가 하나의 이미지를 공유해서 읽어옵니다. 실제로 큰 부분을 차지하는 이미지를 하나로 유지할 수 있기 때문에 컨테이너를 생성할 때 속도가 빨라지는 것이죠. 또한 아래와 같이 설명해주셨는데요 컨테이너를 만들 때 사용된 이미지에 따라서 이미지의 읽기 전용 레이어 전체를 공유할수도 있고 일부만 공유할 수도 있습니다 이렇게 이미지의 읽기 전용 레이어를 활용하면 컨테이너를 실행할 때 전체 공간을 복사하지 않아도 되기 때문에 컨테이너를 빠르게 실행할 수 있습니다. 그리고 컨테이너가 늘어나면서 사용하는 공간을 최대한 작게 관리할 수 있습니다. 엔진엑스 이미지 A가 다운받아져있다 가졍하고 index.html이 다른 이미지 B를 다운 받는다 가정해보겠습니다. 이미지 B를 다운받을때 이미지 A와 레이어가 같은것은 다운받지 않고 레이어가 다른 index.html레이어만 다운받는걸까요? 컨테이너가 늘어나면서 사용하는 공간을 최대한 작게 관리할 수 있다라는게 어떤것인지 잘 이해가 되지 않아 질문드려봅니다 (레이어별로 파일이 나뉘어 있는걸까요) 혹시 위와 같은 부분을 실습으로 확인할 수 있는 것이나 공식문서 부분에서 확인할 수 있는게 있다면 같이 부탁드립니다!
해결됨
입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
안녕하세요 또 이렇게 질문을 드리네요 공통 개발 - 인터셉터에서 AdminInterceptor은 @Component을 사용합니다. 제가 자료를 찾아봤는데 개념 이해가 어렵더라구요 개발자가 직접 작성한 class를 Bean으로 등록하기 위한 어노테이션이라고 정의 되어 있던데 그럼 Bean은 또 뭔지 찾아봤어요 자바 객체를 스프링에서는 Bean이라고 한다. 라고 정의 되었더라구요. 객체는 뭐 재료를 합쳐서 사용자가 사용할 수 있겠끔 만들어진 거가 객체인건 알고 있고 .... 다시 정리하면 직접 작성한 class를 객체화 시키려는건가라고 좀 애매하게 이해했는데 이건 또 아닌거 같고.. 예제를 본다면 class InlineExamConsole { @Autowired public void setExam(Exam exam) { this.exam = exam; } } 이 클레스면 xml은 <context:annotation-config/> <bean id = "exam" class="entity.NewlecExam" /> <bean id = "console" class="ui.InlineExamConsole"> </bean> 로 되어야 하고... IoC 컨테이너의 상황은 exam: Exam<---- console:InlineExamCode 처럼 플로우가 될꺼구... 그런데 <context:annotation-config/> <bean id = "exam" class="entity.NewlecExam" /> <!-- <bean id = "console" class="ui.InlineExamConsole"> </bean>-> 를 해서 삭제.... bean을 삭제 하면 IoC 컨테이너의 상황은 아래처럼 될듯 한데 exam: Exam<---- console:InlineExamCode console는 또 사용해야겠으니 아래처럼 @Componet를 등장시키고, @Componet class InlineExamConsole { @Autowired public void setExam(Exam exam) { this.exam = exam; } } IoC 컨테이너에서 console:InlineExamCode를 부활 exam: Exam<---- console:InlineExamCode 그런데 부활만 했지 그냥 좀비 상태가 되어 버린 console:InlineExamCode... console:InlineExamCode은 어떻게 찾는건지.. 그럼 xml를 변경 <context:component-scan base-package = "spring.di.ui"/> <context:annotation-config/> <bean id = "exam" class="entity.NewlecExam" /> 위 테그로 spring.di.ui에 컴포넌트가 있으니 다른곳에 찾지 말고 위 테그에서 컴포넌트 찾고 그 컴포넌트를 Bean에 등록해서 객채화 해~~~ 라는거같은데 코드상으로는 이렇게 이해를 했어요 하지만 강의에서는 context:component-scan base-package 를 못본거 같은데 ....(뭐 제가 바빠서 꼼꼼하게 못본것일 수도 있고 ) 저 컴포넌트의 이해를 좀 도와주시면 안될까요?? 컴포넌트 활용이나 @Component를 사용안하면 얼마나 불편해지길래 저 이노테이션을 사용한건지 ... (사실 저 이노테이션을 안써도 잘 활용할 수 있을거 같은데 ...)
해결됨
재고시스템으로 알아보는 동시성이슈 해결방법
spring: jpa: hibernate: ddl-auto: create show-sql: true datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/stock_example username: root password: 1234 # JPA 쿼리가 어떻게 나가는지 logging: level: org: hibernate: SQL: DEBUG type: descriptor: sql: BasicBinder: TRACE yml 설정은 위와 같이 하고 docker 이미지 확인시에 아래와 같이 작동하고 있습니다. igwangmin@igwangmin-ui-MacBookPro ~ % docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 03d3fae9019b mysql "docker-entrypoint.s…" 4 days ago Up 16 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql DB 조회 시에도 아래와 같이 나오는 데 혹시 제가 놓친 부분이 있을까요? mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | stock_example | | sys | +--------------------+ 5 rows in set (0.01 sec)
해결됨
개발자를 위한 쉬운 도커
제가 이미 VSC에 깃허브 로그인이 되어있었고 커밋 푸시를 했는데도 액션이 실행이 안되었는데, 아래 글을 보고 해결했습니다. 08-cicd 브랜치 터미널에서 다음 <내용> 칸에 본인에 맞는 값을 채운뒤 실행하면 됩니다. git remote set-url origin https://<personal_access_token>@github.com/<your_username>/leafy.git https://stackoverflow.com/questions/66231282/how-to-add-a-github-personal-access-token-to-visual-studio-code
해결됨
입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
안녕하세요 틈틈히 공부 하고 있는데 여기까지 왔네요.. 이해를 못하는 부분이 좀있어서 첨 부터 다시 보고 여기 까지 왔는데 모르는부분은 인터넷에서 확인하고 알아갔는데 강의 내용에서 알려주신 자료와 강의 하신 자료가 다른거 같아서 이렇게 글 남기네요 Personal - Free Bootstrap Template - Start Bootstrap 에서 받은 자료을 받아서 압축 풀면 ===================== =================== 위처럼 나타납니다. 강의 내용에서 자료를 받은 내용은 이렇더라구요 ============================= 제자료는 강사님의 자료 처럼 Vendor이 없어요... 강의 노트를 확인하면 [링크에서 템플릿 파일 다운로드 후 압축을 해제하고, 파일과 폴더를 각각 아래 경로에 추가합니다. 디렉토리가 없다면 만듭니다] 라고 적혀 있어서 위 처럼 폴더를 만들긴 했지만 vendor폴더가 없어요 강사님의 git에 있는 벤드를 가져와서 붙여도 되나요?? 그러면 강의 내용을 앞서 가는거 같아서 하다가 말았어요... Vendor 폴더 그냥 폴더만 만들고 계속 강의 들어도 되나요?
미해결
개발자를 위한 쉬운 도커
안녕하세요 데브위키님 윈도우 사용자는 터미널을 실행한다고 했을 때 PowerShell을 항상 실행하면 되는건가요?? 그리고 현재 강의에서 사용하시는 mac 명령어와 window 명령어가 동일한가요?
미해결
AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
안녕하세요, 포트를 80으로 바꾼 뒤, sudo npm run start 가 안됩니다. sudo: npm: command not found 메세지 뜹니다. 어떻게 해야될까요?
미해결
멀티OS 사용을 위한 가상화 환경 구축 가이드 (Docker + Kubernetes)
쿠버네티스 설치 작업하는 도중에 에러가 발생하고 있습니다. 쿠버네티스 설치 명령어 순서 apt-get install -y apt-transport-https ca-certificates curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF apt-get update apt-get update 명령어를 사용하면 404 에러가 뜨고 있습니다. root@k8s-master:/home/vagrant# apt-get install -y apt-transport-https ca-certificates curl Reading package lists... Done Building dependency tree Reading state information... Done ca-certificates is already the newest version (20230311ubuntu0.20.04.1). The following NEW packages will be installed: apt-transport-https The following packages will be upgraded: curl libcurl4 2 upgraded, 1 newly installed, 0 to remove and 99 not upgraded. Need to get 398 kB of archives. After this operation, 162 kB of additional disk space will be used. Get:1 http://us.archive.ubuntu.com/ubuntu focal-updates/universe amd64 apt-transport-https all 2.0.10 [1,704 B] Get:2 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 curl amd64 7.68.0-1ubuntu2.21 [161 kB] Get:3 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libcurl4 amd64 7.68.0-1ubuntu2.21 [235 kB] Fetched 398 kB in 4s (110 kB/s) Selecting previously unselected package apt-transport-https. (Reading database ... 112280 files and directories currently installed.) Preparing to unpack .../apt-transport-https_2.0.10_all.deb ... Unpacking apt-transport-https (2.0.10) ... Preparing to unpack .../curl_7.68.0-1ubuntu2.21_amd64.deb ... Unpacking curl (7.68.0-1ubuntu2.21) over (7.68.0-1ubuntu2.19) ... Preparing to unpack .../libcurl4_7.68.0-1ubuntu2.21_amd64.deb ... Unpacking libcurl4:amd64 (7.68.0-1ubuntu2.21) over (7.68.0-1ubuntu2.19) ... Setting up apt-transport-https (2.0.10) ... Setting up libcurl4:amd64 (7.68.0-1ubuntu2.21) ... Setting up curl (7.68.0-1ubuntu2.21) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9.9) ... root@k8s-master:/home/vagrant# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - OK root@k8s-master:/home/vagrant# cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list > deb https://apt.kubernetes.io/ kubernetes-xenial main > EOF deb https://apt.kubernetes.io/ kubernetes-xenial main root@k8s-master:/home/vagrant# apt-get update Hit:1 http://us.archive.ubuntu.com/ubuntu focal InRelease Get:2 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] Hit:3 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease Hit:4 https://download.docker.com/linux/ubuntu focal InRelease Hit:5 http://security.ubuntu.com/ubuntu focal-security InRelease Ign:6 https://packages.cloud.google.com/apt kubernetes-xenial InRelease Err:7 https://packages.cloud.google.com/apt kubernetes-xenial Release 404 Not Found [IP: 142.251.214.142 443] Reading package lists... Done E: The repository 'https://apt.kubernetes.io kubernetes-xenial Release' does not have a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.
해결됨
개발자를 위한 쉬운 도커
Dockerfile을 만들때 RUN 지시어에서 npm install 을 하는 것은 node module 폴더가 build context에 없기 때문인건가요? 만약에 build context 폴더에서 npm install 명령으로 node module 에 라이브러리들을 다운 받은 상태에서 Dockerfile 에서 COPY 명령으로 ./ / 를 작성하면 node module 도 그대로 복사가 되고 그러면 굳이 RUN 명령어로 npm install을 안해도 되는건가요?
해결됨
입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
안녕하세요 또 이렇게 질문하게 되네요 먼저 코드는 틀린거 없이 Git 내용과 강의 내용코드 그대로 작성하였습니다. 하지만 왜 일까요?? 에러가 나네요 이부분이 에러 납니다. al experience = experienceRepository.findAll() ====================== @Test fun testFindAll() { println("---- findAll 테스트 시작 ----") val experience = experienceRepository.findAll() assertThat(experience).hasSize(DATA_SIZE) println("experiences.size: ${experience.size}") for (experience in experience) { assertThat(experience.details).hasSize(experience.title.toInt()) println("experience.details.size: ${experience.details.size}") } println("---- findAll 테스트 종료 ----") } ==================================== 이부분도요 findAllByIsActive(true) @Test fun testFindAllByIsActive() { println("----- findAllByIsActive 테스트 시작 -----") val experiences = experienceRepository.findAllByIsActive(true) assertThat(experiences).hasSize(DATA_SIZE) println("experiences.size: ${experiences.size}") for (experience in experiences) { assertThat(experience.details).hasSize(experience.title.toInt()) println("experience.details.size: ${experience.details.size}") } println("----- findAllByIsActive 테스트 종료 -----") } 에러 코드는 기니깐 핵심 부분만 올려 드리면 Hibernate: select e1_0.experience_id,e1_0.created_date_time,e1_0.description,d1_0.experience_id,d1_0.experience_detail_id,d1_0.content,d1_0.created_date_time,d1_ 0.is _active,d1_0.update_date_time,e1_0.end_month,e1_0.end_year,e1_ 0.is _active,e1_0.start_month,e1_0.start_year,e1_0.title,e1_0.update_date_time from experience e1_0 left join experience_detail d1_0 on e1_0.experience_id=d1_0.experience_id where e1_ 0.is _active=? org.springframework.orm.jpa.JpaSystemException: No default constructor for entity 'com.justkim.portfolio.domain.entity.ExperienceDetail' at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException( HibernateJpaDialect.java:341 ) 이이쿠 한줄만 적는데도 기네요 ExperienceDetail.kt 코드는 @Entity class ExperienceDetail(content: String, isActive: Boolean) : BaseEntity() { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "experience_detail_id") var id:Long? = null var content: String = content var isActive: Boolean = isActive fun update(content: String, isActive: Boolean) { this.content = content this.isActive = isActive } } 이런데 ExperienceDetail( 가 계속 경고를 때리네요 Class 'ExperienceDetail' should have [public, protected] no-arg constructor https://github.com/justkjy/portfolio-justkim 깃 주소입니다 구글에서 위 에러를 검색하니깐 인프런 오류 질문이 올라 와 있던데 봐도 모르겠네요 https://www.inflearn.com/questions/931371/test-%EC%98%A4%EB%A5%98 감사합니다.
미해결
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
docker-compose up을 사용하면 initdb: error: directory "/var/lib/postgresql/data" exists but is not empty initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data". 라는 오류가 자꾸 발생합니다. 삭제하고 다시 해도 해결이 안되서 질문남깁니다. 어떻게 해결해야하나요.
미해결
개발자를 위한 쉬운 도커
wsl 패키지를 실행시키면 이런 오류가 뜹니다.. 이렇게 linux용 windows 하위시스템 부분이 체크되어 있는데도요ㅠ 하위시스템 설치 완료되어 있다는데 왜 안되는 걸까요?
해결됨
데브옵스(DevOps)를 위한 쿠버네티스 마스터
sudo kubeadm init 명령어를 입력했는데 다음과 같은 에러가 발생합니다. ttasjwi20240228@master-1:~$ sudo kubeadm init [init] Using Kubernetes version: v1.29.2 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: time="2024-03-04T06:52:20Z" level=fatal msg="validate service connection: validate CRI v1 runtime API for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService" , error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher 이런 문제가 발생하네요. 검색해보면 2020년 containerd github에 이런 증상에 관한 이슈가 올라와져있습니다. https://github.com/containerd/containerd/issues/4581 이 이슈의 답변에는 이런 내용이 있습니다. c ontainerd.io 패키지에 의해 설치된 config.toml 파일에는 disabled_plugins = ["cri"]라는 줄이 있는데, 이것이 문제를 일으킨 것으로 보입니다. 이 문제를 해결하려면 다음 명령을 실행하시면 됩니다. sudo rm /etc/containerd/config.toml sudo systemctl restart containerd sudo kubeadm init 혹시 워커노드에서 join할 때도 동일한 문제 생기면 sudo rm /etc/containerd/config.toml sudo systemctl restart containerd 이 명령을 워커노드에 입력해봅시다
미해결
데브옵스(DevOps)를 위한 쿠버네티스 마스터
아래에 23년 당시 설치방법을 올리신 분의 것으로도 잘 안 되서... 그 사이에 또 바뀌었나 싶어서 노션 링크의 공식 문서를 보고 따라했습니다만 apt 명령으로 kubelet, kubeadm, kubectl이 설치가 안 되는 문제가 있습니다. 노션 링크의 공식문서는 한국어 문서였고, 최신화가 안 되어있던 것입니다. 영어 문서 를 봐야합니다. 현재 공식문서에서는 이런 말이 나와있습니다. Note: The legacy package repositories ( apt.kubernetes.io and yum.kubernetes.io ) have been deprecated and frozen starting from September 13, 2023 . Using the new package repositories hosted at pkgs.k8s.io is strongly recommended and required in order to install Kubernetes versions released after September 13, 2023. The deprecated legacy repositories, and their contents, might be removed at any time in the future and without a further notice period. The new package repositories provide downloads for Kubernetes versions starting with v1.24.0. apt.kubernetes.i and yum.kubernetes.io 레거시 패키지 리포지토리 deprecated apt.kubernetes.io and yum.kubernetes.io 2023년 8월 13일 이후 릴리즈되는 새로운 쿠버네티스 버전을 설치하기 위해서는 새로운 패키지 리포지토리를 써라 http://pkgs.k8s.io 새로운 패키지 리포지토리는 1.24.0 ~ 이후의 버전을 지원 이런 내용이 한국어 문서에는 반영이 안 됐습니다. 해당 문서에서는 1.29.0을 설치하기 위해 다음을 하라고 합니다. apt 패키지 인덱스를 업데이트하고 Kubernetes apt 저장소를 사용하는 데 필요한 패키지를 설치하십시오: sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gpg Kubernetes 패키지 저장소의 공개 서명 키를 다운로드하십시오. 모든 저장소에 동일한 서명 키가 사용되므로 URL에서 버전을 무시할 수 있습니다: (우분투 20.04에서는 sudo mkdir -p -m 755 /etc/apt/keyrings 명령어를 입력해야합니다) # If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below. # sudo mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg 적절한 Kubernetes apt 저장소를 추가하십시오. 이 저장소에는 Kubernetes 1.29에 대한 패키지만 있으므로, 다른 Kubernetes 마이너 버전을 사용하는 경우 URL에서 Kubernetes 마이너 버전을 원하는 버전에 맞게 변경해야 합니다(설치할 Kubernetes 버전의 문서를 읽고 있는지도 확인해야 합니다). # This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list apt 패키지 인덱스를 업데이트하고 kubelet, kubeadm 및 kubectl을 설치하고 버전을 고정하십시오: sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl 결론 바로 위 내용을 그대로 적용하신다면 아래 내용을 복사 붙여넣기 하시면 돼요. cat <<EOF > kube_install.sh # /etc/apt/keyrings 폴더 생성 및 권한 부여 sudo mkdir -p -m 755 /etc/apt/keyrings # 1. apt 패키지 색인을 업데이트하고, 쿠버네티스 apt 리포지터리를 사용하는 데 필요한 패키지를 설치한다. sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gpg # 2. 구글 클라우드의 공개 사이닝 키를 다운로드 한다. sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg # 3. 쿠버네티스 apt 리포지터리를 추가한다. echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list # 4. apt 패키지 색인을 업데이트하고, kubelet, kubeadm, kubectl을 설치하고 해당 버전을 고정한다. sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl EOF sudo bash kube_install.sh kubeadm version 실행 후 버전 확인을 해보시면 됩니다 지금 자료는 2024.03.04 기준 공식문서(영어<- 중요) 자료고 내일 당장 바뀔 수도 있습니다. 제가 지금 올린 내용을 믿으시지 마시고 일단 먼저 공식문서 (영어 <- 중요) 를 참고하세요!
해결됨
개발자를 위한 쉬운 도커
보통 운영 서버와 테스트 서버를 관리할 때, 실무에서는 어떤 방식으로 관리하는지 궁금합니다! 저도 팀 프로젝트를 하면서 테스트 서버와 운영 서버를 분리시켜서 CI/CD를 구축하고 싶은데 어떤 방법이 맞는건지 잘 모르겠어서요! 두 개의 EC2를 사용하는건 너무 부담되는데 그럼 하나의 EC2에서 컨테이너 2개(테스트용, 배포용)를 각각 운영하는 방법이 맞는걸까요?
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 개발환경은 Windows10 입니다. 도커 데스크탑을 사용하고 있는데요, docker run --privileged -itd --name ansible-server -p 20022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/ansible:latest /usr/sbin/init 강의노트에 적어주신 명령어를 보면 -v 옵션이 있습니다. 그런데 제 환경은 윈도우인데도 -v /sys/fs/cgroup:/sys/fs/cgroup 콜론을 기준으로 왼쪽이 호스트에 마운트될 경로로 알고 있는데 윈도우 경로로 바꾸면 에러가 나서 ssh 연결을 할 수가 없습니다. -v 옵션을 제거하고 해도 에러가 나구요. 반드시 저렇게 입력을 해야만 서버가 제대로 구동이 되는데 윈도우 환경인데도 되는 이유는 무엇이고 저렇게 경로를 작성하면 윈도우에서는 어디에 볼륨이 마운트 되는건가요? 강의에서는 -v 옵션에 대해서는 설명을 안하고 넘어가셔서 질문드립니다.
해결됨
개발자를 위한 쉬운 도커
도커파일에서 USER 명령어가 RUN과 CMD 사이에 와야하는 이유가 무엇인가요? 그리고 USER 명령어가 사용되는 이유에 대해 잘 이해가 가질 않아서 그런데 리눅스의 어떤 개념을 공부해야 하나요?
해결됨
개발자를 위한 쉬운 도커
CMD ["nginx" "-g" "daemon off;"] 이 부분이 잘 이해가 안가서 찾아보니foreground로 실행되게 변경하는것, 초기 프로세스가 종료되지 않고 컨테이너가 계속 실행된다.로 나와있던데 이게 잘 와닿지가 않습니다.. 우선 저 명령어는 생성한 nginx 컨테이너에서 실행되는거라고 이해했는데 foreground로 실행된다는게 정확히 어떤 뜻인가요? 컨테이너도 도커가 켜져있고 안건드리면 계속 돌아가지 않나요?