ssh 사용 이유
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
안녕하세요 ssh 사용 이유에 대해 궁금해서 질문 드립니다! 1. 호스트에서 특정 docker에 접속할 때 ssh를 쓰는 이유가 무엇인가요? 그냥 exec로 접속하면 안될까요? 젠킨스에서 docker 접속할 때만 ssh 쓰면 되지 않나요? 이유가 궁금합니다!
- ansible
- jenkins
- kubernetes
- ci/cd
- sonarqube
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
안녕하세요 ssh 사용 이유에 대해 궁금해서 질문 드립니다! 1. 호스트에서 특정 docker에 접속할 때 ssh를 쓰는 이유가 무엇인가요? 그냥 exec로 접속하면 안될까요? 젠킨스에서 docker 접속할 때만 ssh 쓰면 되지 않나요? 이유가 궁금합니다!
해결됨
Jenkins를 이용한 CI/CD Pipeline 구축
안녕하세요. 저는 취준생으로서 자동화를 경험하고자 강의를 듣기 시작했습니다. 지금 저는 6명 인원으로 웹사이트 개발 프로젝트를 진행하며 Java/SpringBoot 로 백엔드 개발과 배포 포지션을 맡았습니다. 스프링 프로젝트를 만들면, test 폴더에 test코드를 작성하여 단위테스트와 통합테스트를 진행할 수 있는 것으로 알고있습니다. 만약, 프로젝트에서 단위테스트 코드를 작성하지 않았다고 가정한다면 젠킨스의 Build - Test - Package 단계에서 Test 부분은 생략되어 Package가 진행되나요?
해결됨
Jenkins를 이용한 CI/CD Pipeline 구축
Windows, MacOS(Intel chip)를 사용하는 사용자를 대상으로 실습하실 수 있으며, VM 설치에 대한 부분은 별도의 강의에서 진행되고 있습니다. (2023-07-17 공개강의 오픈 예정) 라고 하셨는데, 별도의 강의가 어디에 있는지 알고싶습니다.
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/jenkins_home/workspace/My Third Project/target/user-service-1.0.war] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1198) at hudson.FilePath.act(FilePath.java:1181) at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:767) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711) at hudson.model.Run.execute(Run.java:1925) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:101) at hudson.model.Executor.run(Executor.java:442) Caused by: java.io.FileNotFoundException: http://172.20.10.2:8088/manager/text/list at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1920) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:577) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) ... 19 more 꼭 톰캣매니저가 있어야 배포가 될까요? 도커이미지로 설치하면, 톰캣매니저는 없네요,,
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
해당 도커서버도 아래 명령어처럼 privileged를 사용하지 않고 2번째 방식으로 작성하면 될까요?? docker run -itd --name docker-server -p 10022:22 -p 8081:8080 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
처음 SSH를 기동할 때 2번째 방법인 DOOD 방법으로 기동하였습니다. docker run -itd --name docker-server -p 10022:22 -p 8081:8080 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init 코드를 보시면 아시다싶히 -p 10022:22 마운팅과 추가로 -p 8081:8080 마운팅을 추가하였습니다. 이후 Jenkins로 빌드를 진행하였고 아래와 같이 빌드가 정상적으로 처리가 되는것이 확인이 됩니다. 하지만 localhost:8081/hello-world로 접속하면 접속이 안되고 localhost:8080/hello-world로 접속해야만 접속이 가능해집니다. 당연히 제대로 된다면 둘 다 접근이 가능해지겠죠? 근데 톰캣 포트로만 접근이되버려서... 제가 처음 ssh를 기동할때 분명 8080포트를 8081로 마운팅을 했는데 왜 8081포트로 접속이 안되는건지 원인과 해결 부탁드립니다.
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
DOOD방식에서는 그럼 yum install -y iptables net-tools sed -i -e 's/overlay2/vfs/g' /etc/sysconfig/docker-storage 위 두 명령어를 실행하지 않아도 되는건가요?
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
맥 OS는 Ventura 13.2.1입니다. 도커 이미지를 docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init 로 실행하였습니다. net-tools하고 ssh서버를 깔았구요, docker-desktop으로 컨테이너에 terminal에서 확인을 했을 때 [root@147277fe7c68 etc]# service sshd status Redirecting to /bin/systemctl status sshd.service ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2023-07-09 04:34:51 UTC; 2h 40min ago 라는 결과가 출력되어 ssh도 잘 깔려있고 22번 포트가 정상적으로 실행되는지 확인했을 때 LISTEN으로 잘 동작했습니다 [root@147277fe7c68 etc]# netstat -an | grep LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN 도커 이미지를 실행하고 centOS8임을 확인하고 ssh서버까지 실행된다고 이해했습니다 ssh root@localhost -p 10022 를 사용해서 로컬호스트에서 접속할때는 정상적으로 잘 접근됩니다. 그런데 ifconfig를 사용해서 eth0의 주소를 확인 해 보면 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 65535 inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255 라고 떠서 172.17.0.3 으로 접속하면 되겠다고 이해 했는데 로컬 iterm2를 사용해서 접속해보면 접속이 거부됩니다. iterm2과 terminus에서는 시간초과가 나고 👤 Starting a new connection to: "172.17.0.3" port "10022" ⚙️ Starting address resolution of "172.17.0.3" ⚙️ Address resolution finished ⚙️ Connecting to "172.17.0.3" port "10022" 😨 Connection failed: connection timed out. No more addresses to try. jenkins에서는 jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [docker-server]. Message [java.net.ConnectException: Connection refused (Connection refused)]] 라는 에러가 뜹니다. 어느부분이 문제인지 모르겠습니다 흑흑
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
ssh가 22번포트를 사용함으로 별도로 포트번호를 지정하지않아도 ssh root@ip로 접근이 가능한건가요? 만약 그렇다면 컨테이너 내부포트가 22번이 아닌 다른 컨테이너에게도 똑같이 접근할 수 있나요? 원래 컨테이너 내부는 userid@내부ip로 접근할 수 있는건가요?
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
docker 로 ssh 서버 연결 시 사용되는 docker images를 만드는 방법도 설명 되어 있나요 ?
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 제가 지금 프로젝트를 하고 있고 CI/CD 및 Docker까지 적용하고자 이 강의를 구매하게 되었습니다! 일단 프로젝트가 급해서 쿠버네티스까지는 프로젝트가 끝나고 난뒤 이후에 개념을 다시 잡는 용도로 듣고자 하는데, 섹션2를 수강하고 난뒤 바로 섹션 5로 넘어가도 섹션5를 듣는데 무리가 없는지 여쭤봅니다!
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
MAC용 JDK를 다운받고, .bash_profile 에서 JAVA_HOME 환경변수를 설정하였는데요. 어떤 부분을 놓쳤는지, echo $JAVA_HOME 을 해보면 The operation couldn’t be completed. Unable to locate a Java Runtime. 에러가 나오네요. 백엔드 개발자가 아니다보니, JDK설치 부분에서부터 막히네요 ㅜㅜ
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
부록이 뭔가요 ?
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
ssh 접속 시도시 아래와 같은 에러가 출력 됩니다. - 방화벽 내리고 /etc/hosts.allow 127.0.0.1 추가하고 sshd 서비스 재시작해도 안됩니다. kex_exchange_identification: read: Connection reset by peer Connection reset by 127.0.0.1 port 10022 다운 받은 SSH 이미지 정상 동작 상태임을 확인 Up 44 minutes 0.0.0.0:10022->22/tcp, :::10022->22/tcp, 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp docker-server 열린 포트 확인하여 포트포워딩 설정 확인 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:10022 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 도커 컨테이너, 소캣 상태 정보 확인 CGroup: /system.slice/docker.service ├─ 9218 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ├─25925 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8081 -container-ip 172.17.0.2 -container-port 8080 ├─25933 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8081 -container-ip 172.17.0.2 -container-port 8080 ├─25946 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 10022 -container-ip 172.17.0.2 -container-port 22 └─25953 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 10022 -container-ip 172.17.0.2 -container-port 22
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
윈도우 10 환경에서 SSH Server 설치를 하고있습니다.. 이미지 실행 : docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init 이미지 실행후 ssh 접속해서 vi /etc/sysconfig/docker 다음 디렉토리로 가면 docker 파일이 존재하지 않아요 왜그런건가요?
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Windows + docker window desktop v20.10.12입니다. 1번,2번,3번 다 해도 아래와 같이 에러가 나옵니다. Failed to insert module 'autofs4': No such file or directory systemd 239 (239-51.el8_5.2) running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy) Detected virtualization docker. Detected architecture x86-64. Welcome to CentOS Linux 8! Set hostname to <c555b9996bb9>. Couldn't move remaining userspace processes, ignoring: Input/output error Failed to determine supported controllers: No such file or directory Failed to allocate manager object: No such file or directory [!!!!!!] Failed to allocate manager object, freezing. Freezing execution.
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 실습 8까지 진행하였습니다. index.jsp의 코드를 바꾸고 커밋 푸시하면 정상적으로 CI/CD 작업이 진행되나 화면에 적용되지 않습니다. 화면이 계속 그대로입니다. 깃허브에도 코드가 바뀌었고 도커 허브에도 이미지가 올라가 있고 pods, services, deployments 모두 정상 업데이트 됩니다. 뭐가 문제일까요?
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
도커를 실행시키고 docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-server --restart=on-failure jenkins/jenkins:lts-jdk11 을 통해 젠킨스 이미지를 다운 받고 실행을 시켰습니다. docker ps 를 통해 jenkins 도커가 실행중임을 확인 하였고, http://127.0.0.1:8080/ 접속을 통해 젠킨스 로그인 창이 뜨는것 까지 확인 했습니다. 그런데, 초기 비밀번호는 어디에서 확인할수 있는걸까요? 제가 진행한 Flow에서는 강의영상 9분 46초에 나와있는 화면을 접하지 못했습니다. 제가 어떤 부분을 놓친걸까요?
미해결
Jenkins를 이용한 CI/CD Pipeline 구축
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Ansible도 이전에 section 2처럼 DooD방식으로 하면 되나요? 저는 자연스럽게 DooD를 사용하고 있었는데 section 3 들어와서는 별다른 언급이 없으셔서 질문드려봅니다. windows에서 DinD 방식은 안된다고 알고 있으면 될까요?
해결됨
Jenkins를 이용한 CI/CD Pipeline 구축
github에 ***** 이런식으로 즉각 반영하는 건 안 좋다고 하셨는데 보통 실무에서는 cron 시간을 몇 분으로 설정하나요? 시간과 그 이유에 대해 알고 싶습니다.