알아두면 좋은 IT 지식/General

WSL2 Docker CentOS 컨테이너 초기세팅 및 이미지 만들기 - 무작정 따라하기 (2)

uutopia 2024. 1. 1. 13:37

 
이전 글(https://uutopia.tistory.com/62)에서 생성한 centos 컨테이너는 완전 초기 이미지 그래로인 상태로 기본 세팅을 어느정도 진행해야 비로소 사람이 쓸만한 리눅스 서버가 만들어 진다.
이번 글에서는 centos 기본 설정들을 진행하고 세팅이 완료된 컨테이너를 이미지로 만들어서 Docker 허브에 올리는 것 까지 진행해서 이미지를 관리하는 스킬을 무작정 따라하기를 통해서 익혀보자.
 
 
 

구축 환경

Windows 11, version 22H2
WSL 2.0.9.0
Docker Desktop 4.26.1
Docker Engine 24.0.7
Centos 8.5.2111
 
 
 

신규 CentOS 컨테이너 생성

초기 세팅을 위해서 기존 컨테이너를 삭제하고 system권한과 원격접속이 가능한 컨테이너를 다시 생성해서 진행하도록 한다.
 
1. 도커 실행 후 기존 컨테이너 삭제
  a. Docker Desktop 을 실행해서 Docker Engine을 구동
  b. cmd창을 열고 docker ps -a 명령어로 컨테이너 목록을 확인
  c. docker rm centos_test 명령어로 기존 컨테이너를 삭제
  d. docker ps -a 명령어로 컨테이너가 정상적으로 삭제 된 것을 확인

 
2. 신규 컨테이너 생성 및 접속
  a. docker images 명령어로 이미지 목록에서 centos 이미지를 확인
  b. docker run -itd --privileged --name centos_v1 centos /sbin/init 명령어 실행 시
    → centos 이미지로 centos_v1 컨테이너를 생성
    → 옵션을 통해서 리눅스 커널권한을 사용할 수 있는 프로세스를 백그라운드에서 실행하도록 설정
  c. docker exec -it centos_v1 /bin/bash 명령어 실행 시
    → centos_v1 컨테이너에서 bash쉘을 실행하여 터미널 접속 

 
 
 
 

CentOS 기본 설정

1. yum 저장소 변경 및 최신화
  a. sed -i 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/CentOS-Linux-* 명령어로 yum 미러 저장소 주석처리
  b. sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* 명령어로 yum 기본저장소 주소 변경
  c. yum update -y 명령어로 yum 패키지 최신화
  d. yum upgrade -y 명령어로 yum 패키지 최신화

 
2. root 비밀번호 설정
  a. yum install passwd -y 명령어로 passwd 설치
  b. passwd 명령어로 root 계정 비밀번호 설정
    → New Password: 비밀번호 입력
    → Retype new password : 비밀번호 재입력

 
3. 네트워크 설정
  a. echo DNS1=8.8.8.8 >> /etc/sysconfig/network-scripts/ifcfg-ens3 명령어로 DNS서버 설정
  b. yum install NetworkManager -y 명령어로 NetworkManager 설치
  c. systemctl restart NetworkManager 명령어로 네트워크 변경사항 적용

  
4. 시간 동기화
  a. yum install chrony -y  명령어로 chrony 설치
  b. timedatectl set-timezone Asia/Seoul  명령어로 시간대를 서울 기준으로 변경
  c. sed -i 's/pool 2.centos.pool.ntp.org/server 0.kr.pool.ntp.org/g' /etc/chrony.conf  명령어로 시간 동기화 서버 변경
  d. systemctl start chronyd.service  명령어 실행 시 실패 (오래 걸릴 경우 [Ctrl] + [C] 키로 강제 중지)
  e. chown -R root:root /run/chrony/  명령어로 /run/chrony/ 디렉터리 소유자를 root로 변경 (d. 실패 원인 해결)
  f.  systemctl restart chronyd.service  명령어로 chronyd 서비스 재시작
  g. systemctl status chronyd.service  명령어로 chronyd 서비스 상태 확인
  h. systemctl enable chronyd.service  명령어로 chronyd 서비스 활성화

 
5. openssh 설치
yum install openssh-server -y  명령어로 openssh-server 설치

 
여기까지 진행하면 이제 어느정도 쓸만한 Centos 컨테이너가 생성 되었다.
 
 
 

CentOS 이미지 만들기

기본설징이 완료된 CentOS 컨테이너를 이미지로 만들어놓고 허브에 올려서 컨테이너로 마음껏 활용해 보자.
 
1. Docker Hub 회원가입 및 저장소 만들기
  a. https://hub.docker.com/ 접속 후 Sing up 클릭해서 회원가입 진행
  b. 로그인 후 Repositories 탭에서 Create repository 클릭
  c. Repository Name 작성 후 Create 버튼 클릭
      (Repository Name을 Docker 이미지 이름과 동일하게 설정)

 
2. 컨테이너 이미지로 만들고 허브에 올리기
  a. exit 명령어로 컨테이너 접속 종료 후 docker stop centos_v1 명령어로 centos_v1 컨테이너 종료
  b. docker commit centos_v1 uutopia1/centos_v1 명령어로 centos_v1 컨테이너를 uutopia1/centos_v1 이미지로 만들기
      (이미지 이름은 허브의 Namespace/RepositoryName 과 일치하도록 설정한다.)
  c. docker login 명령어로 Docker 허브 로그인
  e. docker push uutopia1/centos_v1:1.0 명령어로 uutopia1/centos_v1 이미지를 허브의 uutopia1/centos_v1 저장소에 1.0버전으로 업로드

 
3. 허브에서 다운받은 이미지로 컨테이너 만들어 보기
  a. docker rm centos_v1 명령어로 기존 컨테이너 삭제
  b. docker rmi uutopia1/centos_v1:1.0 명령어로 기존 이미지 삭제
  c. docekr pull uutopia1/centos_v1:1.0 명령어로 허브에서 이미지 다운로드
  d. docker run -it -p 222:22 --privileged --name centos_v2 uutopi1/centos_v1:1.0 /sbin/init 명령어 실행 시   
    → uutopi1/centos_v1:1.0 이미지로 centos_v2 컨테이너를 생성
    → 옵션을 통해서 리눅스 커널권한을 사용할 수 있는 프로세스를 백그라운드에서 실행하도록 설정하고,
    → 포트포워딩을 통해서 PC에서 222포트로 접속 시 컨테이너의 22포트로 접속 되도록 설정 (ssh 접속 포트)
  e. docker exec -it centos_v2 /bin/bash 명령어로 컨테이너 접속
  f.  systemctl status sshd 명령어를 실행해서 openssh이 정상적으로 설치되어 있는지 등 내가 세팅한 정보가 그대로 잘 적용되어 있는지 확인해 본다.

 
 
 
이제 어떤 새로운 환경에서도 Docker가 설치되어 있고 Hub에 로그인만 가능 하다면 내가 만들어 놓은 이미지를 다운 받아서 centos 컨테이너를 생성해서 사용하기 까지 단 1분도 걸리지 않을 것이다.

 
이렇게 서버나 어플리케이션을 이미지로 만들어 놓고 언제 어디서든 컨테이너로 바로바로 생성해서 사용하고 소멸시킬 수 있는 점이 바로 클라우드에서 도커나 컨테이너 개념이 각광받는 가장 큰 이유이다.