Jenkins
필자는 이도원 강사님의 인프런 강의를 통해 SSH Server 및 도커가 설치되어 있는 이미지를 사용했지만,
내가 직접 구현해보고 싶다는 생각이 들었고 나중에 리눅스 실험용 서버로 잘 사용할 수 있기에 관련 내용을
포스팅 하려고 한다.
리눅스 이미지 사용
실행
docker run --privileged -d --name mycentos centos:latest init
ssh 설정을 위해서는 --priviledged 옵션이 필수이다.
--priviledged 옵션이란?
도커 컨테이너는 기본적으로 Unpriviledged 모드로 실행된다.
해당 모드에서는 시스템 주요 자원에 접근할 수 있는 권한이 부족하기 때문에, 특정 장치 등의 시스템 자원에 접근할 수 없다.
해당 부분에 대해 도커 공식 문서에서는 다음과 같이 표현하고 있다.
도커 컨테이너를 Unpriviledged 모드로 실행하면 네트워크 인터페이스의 활성화/비활성화나 IP 주소의 변경 등이 불가능하다고 한다.
따라서, 시스템 내 장치 등 주요 자원에 접근하기 위해서는 도커 컨테이너를 Privileged 모드로 실행을 해주어야 한다.
추가로, 컨테이너를 Priviledged 모드로 실행하면 시스템의 모든 장치에 접근이 가능하며 커널의 기능을 대부분 사용할 수 있다.
접속
docker exec -it mycentos bash
SSH 서버(openssh-server) 및 네트워크 툴(net-tools) 설치
yum install net-tools openssh-server
하지만, 설치과정에서 아래와 같은 오류가 발생하였다.
Mirror site를 찾지 못해 발생하는 문제로 보여 관련 내용을 검색해보았고 다음과 같은 방법으로 해결이 가능하다는 것을 알게 되었다.
해결
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*
centos 8 지원이 2021년 말에 종료되어 Mirror Site가 vault로 전환되어 Mirror Site를 못 찾아 발생하는 문제라고 한다.
정상 설치
SSH 서버 구동
systemctl start sshd
systemctl status sshd
22번 포트가 잘 열려있는 것을 확인할 수 있다.
Docker 설치
도커 설치를 위해 centos에서는 yum-utils 패키지를 먼저 설치해야 한다.
yum install -y yum-utils
그 후 도커 패키지를 설치한다.
yum install docker-ce docker-ce-cli containerd.io
도커 시작
systemctl start docker
systemctl status docker
정상적으로 실행이 되는 것을 확인할 수 있다.
자, 이제 우리는 SSH도 동작하며 도커도 설치가 되어있는 centos 기반의 도커 컨테이너를 구성했다.
루트 유저 비밀번호 설정
ssh로 접속할 때 비밀번호와 함께 접속하기 위해 passwd를 지정하자.
# passwd 설치
yum install -y passwd
# password 설정
passwd root
제작한 centos 컨테이너 이미지로 저장
docker stop, docker commit 명령어를 활용하여 도커 컨테이너를 이미지로 저장한다.
생성된 이미지로 컨테이너 실행
docker run --privileged -d -p 30022:22 --name mycentos hanyoonsoo/mycentos init
설정된 비밀번호로 ssh로 접속
정리
centos를 이용하여 ssh로 접속할 수 있는 나만의 작은 리눅스 서버를 제작하였다.
도커도 설치되어 있으므로 도커도 여러 방면으로 활용해볼 수 있다.
컨테이너를 이미지로 바꾸는 것은 처음해봤는데 역시 도커는 나만의 이미지를 쉽게 만들고 저장할 수 있다는게 큰 메리트 인 것 같다.
참고 블로그
https://tttsss77.tistory.com/153
https://velog.io/@juhwannn/Centos-8-Failed-to-download-metadata-for-repo-appstream
https://velog.io/@itkhj/CentOS-8%EC%97%90-%EB%8F%84%EC%BB%A4-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0yum
'Infra > Jenkins' 카테고리의 다른 글
[Jenkins] Docker 컨테이너로 Ansible 실행하기 (0) | 2024.07.21 |
---|---|
[Jenkins] IaC와 Ansible이란? (0) | 2024.07.20 |
[Jenkins] Jenkins를 이용한 CI/CD 자동화 사용 (0) | 2024.07.17 |
[Jenkins] Jenkins를 통한 기초적인 빌드 작업 (0) | 2024.07.07 |
[Jenkins] Jenkins 소개 (0) | 2024.07.01 |