CICD

Docker ubuntu 베이스 ssh 서버 만들기

tokkaiiii 2024. 11. 28. 10:23

Step

1. 목적

2. 대상

3. Dockerfile

4. build

5. run

6. 정리

7. 테스트 필요

1. 목적

로컬에 개발환경을 설정하기엔 한계가 분명하다. 또한, 서버를 위한 ec2를 개설하여 테스트하는 것도 부담된다. 따라서 컨테이너 환경에서 우분투를 베이스로 하여 ssh 접속이 가능한 서버를 만들고 그 안에서 도커를 사용할 수 있도록 할 것이다.

 

2. 대상

초보 개발자

여러 서버를 올려서 배포 같은 작업을 해보고 싶은 개발자

 

3. Dockerfile

# 1. Ubuntu 최신 버전 이미지 사용
FROM ubuntu:latest

# 2. 환경 변수 설정
ENV DEBIAN_FRONTEND=noninteractive

# 3. 패키지 업데이트 및 OpenSSH 서버, curl, Docker 설치에 필요한 패키지 설치
RUN apt-get update && \
    apt-get install -y \
    openssh-server \
    sudo \
    curl \
    apt-transport-https \
    ca-certificates \
    lsb-release \
    gnupg2 && \
    apt-get clean

# 4. Docker 설치
RUN curl -fsSL https://get.docker.com -o get-docker.sh && \
    sh get-docker.sh && \
    rm get-docker.sh

# 5. Docker Compose 설치 (선택 사항)
RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
    chmod +x /usr/local/bin/docker-compose

# 6. SSH 서비스가 실행될 디렉토리 생성
RUN mkdir /var/run/sshd

# 7. root 사용자 비밀번호 설정 (원하는 비밀번호로 수정)
RUN echo 'root:password' | chpasswd

# 8. root 사용자에 sudo 권한 부여
RUN usermod -aG sudo root

# 9. PermitRootLogin 설정을 yes로 변경 (sshd_config 수정)
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# 10. Docker 그룹에 root 사용자 추가 (Docker 명령어를 사용할 수 있도록)
RUN usermod -aG docker root

# 11. 포트 22 개방
EXPOSE 22

# 12. SSH 서버 시작
CMD ["/usr/sbin/sshd", "-D"]

 

4. build

docker build -t ubuntu-ssh .

 

5. run

docker run --privileged --name ubuntu-ssh -itd -p 10022:22 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host ubuntu-ssh /usr/sbin/init

 

6. 정리

1. ssh root@localhost -p 10022 로 접속하면 설정한 비밀번호인 password 입력하면 ssh 접속 가능

2. 물론 docker container 로 접속도 가능하다

3. docker ps 해보면 docker 사용 가능한지 확인 가능

 

7. 테스트 필요

1. 젠킨스 깔아보거나 배포해서 써보진 않아서 잘 될지 확인 못 해봄

2. 주말에 한 번 테스트 해보고 보완점이 있으면 수정 예정