[LG CNS AM Inspire CAMP 1기] MSA (11) - SSH Docker 환경에서 CI/CD

니니지·2025년 3월 21일

LG CNS AM Inspire Camp 1기

목록 보기
43/47

1. SSH docker 환경에서 CI/CD

- SSH 의 필요성

  1. 보안성 강화
  2. 데이터 암호화
  3. 서버 접근 제어
  4. 무단 접근 방지
  5. 세션 무결성 유지
  6. 침해 사고 예방

2. 도커 이미지 다운로드 (SSH)

  • 윈도우 11 버전 : docker pull edowon0623/docker:no_iptables

3. 서버 컨테이너 실행 (port: 10022)

docker run --privileged -itd --name docker-server -p 10022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker:no_iptables /usr/sbin/init

4. 로그 확인

docker logs -f docker-server -> SSH 작동 되면 ok.

5. 원격 서버 접속

  • ssh 방식이 배포 시 많이 쓰임.
  • docker exec 는 우리가 docker-server를 설치했기 때문에 가능 한 것.
  • ssh root@127.0.0.1 -p 10022, password: p@ssw0rd

오류 발생 가능성


가서 해당 키 지우면 됨.

SSH Client 툴 다운로드 권장. (terminus, xshell, putty 등)

6. 서버 내에서 서비스의 자동 시작 설정, 실행, 상태 점검

7. 결과 확인

- 윈도우에서 도커 이미지 실행해서 도커 서버 접근 테스트


ssh 도커 서버 ip 랑 port 22 로 접근 가능하다.

8. Jenkins에 서버 설정



9. 아이템 생성 및 빌드


  • war 파일이 생성된 것 확인 가능

10. 이미지 만들기

vi Dockerfile

  • 위의 파일 확인 후 배포 할 수도 있지만 (테스트용), 젠킨스에서 설정해놓을 수 있다.
    docker build --tag hello-world:1.0 -f Dockerfile . ;

    빌드 성공 후

    위의 작업(이미지 생성)은 CI 까지만 진행한 것임.

    아래와 같이 CD 작업을 할 수 있지만, 새 아이템을 만들어서 CD 작업을 시키는 게 낫다.

- CI 전용 아이템으로 작업 변경 후 이미지 재생성


docker push hanjinyang/hello-world:1.0

- CD 전용 아이템 생성

docker run --privileged -itd --name run-server -p 20022:22 -p 18080:8080 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker:no_iptables /usr/sbin/init

C:\Users\user>ssh root@127.0.0.1 -p 20022

위의 경우 known_hosts 에서 해당 라인 지우고 진행

C:\Users\user>cd .ssh
C:\Users\user\.ssh>code . .\known_hosts
C:\Users\user\.ssh>ssh root@127.0.0.1 -p 20022

systemctl enable docker
systemctl start docker
systemctl status docker

Jenkins > 관리 > System 서버 설정 수정
[원본]

[수정]

11. 빌드 후 curl 및 브라우저 실행


- 브라우저 접속 시 오류


run-server에서 아래 작업 실행 (포트 번호 변경을 위해 컨테이너와 이미지 재생성)


- DinD 방식

DIND는 "Docker in Docker"의 약자로, 컨테이너 내부에서 또 다른 Docker 데몬을 실행하는 방식.
즉, Docker 컨테이너 안에서 다시 Docker를 실행하여 새로운 컨테이너를 생성할 수 있다.

사용 하는 경우
✅ CI/CD 환경에서 컨테이너를 동적으로 생성하고 싶을 때
✅ 완전히 독립적인 Docker 환경이 필요한 경우
❌ 일반적인 컨테이너 실행이라면 소켓 공유 방식이 더 효율적

필요한 경우
✅ CI/CD 파이프라인에서 동적 컨테이너 생성
✅ 컨테이너 내부에서 추가 컨테이너를 실행해야 할 때
✅ 클러스터링 테스트 (예: Kubernetes, Swarm 등)
✅ 컨테이너 내부에서 자체적으로 빌드 및 실행이 필요할 때

12. 결과


run-server 안에서는 8080 으로 CD 진행

브라우저에서는 18080으로 접근해서 내부에서 8080 CD 진행

OUTRO

[ssh docker-server, run-server]
ssh root@127.0.0.1 -p 10022
ssh root@127.0.0.1 -p 20022
profile
지니니

0개의 댓글