[Docker] Docker에서 CentOS 7 이미지 띄우기

hwwwa·2023년 3월 18일
1
post-thumbnail

Docker에서 CentOS 7 이미지 띄우기

🐳 Docker 실행

  • Docker가 실행중인지 확인
systemctl status docker
  • 실행 중이 아니라면 Docker 실행
sudo systemctl start docker
  • 실행 중인 컨테이너 확인
    • container id 확인 가능
docker container ls
# 또는
docker ps
  • 가동중이거나 멈춘 모든 컨테이너 확인
docker ps -a
# 또는
docker ps -all
  • 컨테이너 리스트 중 필터링하여 검색
    • name: 컨테이너 이름
    • label: run 등의 커맨드에서 붙인 라벨
    • exited: 종료된 컨테이너의 종료 코드
    • status: 컨테이너의 상태. created, restarting, running, ...
    • ancestor: 이미지를 공유받은 컨테이너 출력. <image-name>[:<tag>], <image-id>, <image@digest>
    • before: 설정 컨테이너를 기준으로 이전에 만들어진 컨테이너
    • since: 설정 컨테이너를 기준으로 이후에 만들어진 컨테이너
docker ps -a -f "label=test1"
  • 중지된 컨테이너 재시작
docker restart <container-id>
  • 실행 중인 컨테이너 중지와 제거
# 컨테이너 중지
docker stop <container-id>

# 컨테이너 제거
docker rm <container-id>

🌌 CentOS 7 이미지 다운받기

# Docker Hub 저장소에서 이미지 검색
docker search centos
# 검색 결과
# NAME                         DESCRIPTION                                   STARS    OFFICIAL   AUTOMATED
# centos                       DEPRECATED; The official build of CentOS.     7528     [OK]
# kasmweb/centos-7-desktop     CentOS 7 desktop for Kasm Workspaces          33
# ...

# CentOS 7 버전으로 지정하여 공식 빌드 다운로드
# 버전 미지정 시 8 버전으로 다운로드 됨
docker image pull centos:7

# docker 이미지 목록 보기
docker images

🗃 CentOS 7 이미지로 Docker Container 띄우기

# CenOS 7 이미지를 기반으로 Docker Container 시작
# 	-i : 연결이 종료되어도 컨테이너 상태를 유지
# 	-t : 가상 tty를 할당
# 	-d : 백그라운드에서 컨테이너를 실행하고 컨테이너 ID를 인쇄
# 	-p : 호스트와 컨테이너의 포트를 포워딩
# 	-name : 컨테이너의 이름을 지정
# 	-v : 호스트와 컨테이너의 디렉토리를 마운트
# 	--privileged : 컨테이너 안에서 host의 리눅스 커널 기능을 모두 사용. 호스트의 주요 자원에 접근 가능
# 	--rm : 프로세스 종료 시 컨테이너 자동 제거
# 	/bin/bash : 컨테이너 생성 후 /bin/bash를 실행하여 bash 쉘 이용 가능
docker run --privileged --name mycentos7 -d -p 8022:22 -p 8080:80 -p 8000:8000 centos:7 /sbin/init

# Container 목록을 확인해보면 생성한 Container의 STATUS가 UP인 것을 확인 가능
docker ps -a

# Container에 접속
docker exec -it mycentos7 /bin/bash

# Container 빠져나오기
exit

# CentOS Container에 설치되어 있는 것이 거의 없음
yum install -y ntsysv initscripts && yum clean all
yum install -y net-tools groupinstall 'Development Tools' sudo policycoreutils selinux-policy-targeted make
yum -y update

🏃‍♀️ Docker에 SSH 접속하기

# Docker SSH 설정
yum -y install openssh-server openssh-clients openssh-askpass
cd ~
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cd .ssh
cat id_rsa.pub >> authorized_keys
mkdir /var/run/sshd
sed -i 's/#Port 22/Port 22/g' /etc/ssh/sshd_config

vi /etc/ssh/sshd_config
# PermitRootLogin yes 찾아 주석을 해제하고 저장(:wq)하고 빠져나온다.

service sshd start

# 여기까지 하면 root 권한으로 SSH 로그인이 가능해진다.
# 가령 CentOS 7 의 IP 주소가 192.168.1.20 이라면
# docker 로 접속하기 위한 IP주소는 동일하고, Container 에 매핑한 포트가 8022이면
# 포트를 8022로 설정하고 접속하면 접속된다.

# docker 컨테이너 밖에서 SSH 접속 테스트 방법
# IP 172.16.100.3 인 경우
ssh -p 8022 root@172.16.100.3

docker SSH 접속 테스트 (docker container 밖에서 실행)
ssh -l root -p 8022 192.168.1.20 또는 ssh -p 8022 root@192.168.1.20

📮 Docker Container에 Redis 설치하기

Redis 설치를 위해 예전에 작성해둔 Redis 자동 설치 스크립트를 사용함

  • 컨테이너 밖의 파일(redis 설치 스크립트)을 컨테이너 안으로 복사
docker cp install_redis mycentos7:/root/
  • 참고) 컨테이너 안의 파일을 컨테이너 밖으로 복사
docker cp mycentos7:/root/install_redis ~/
  • Container에 접속하여 Redis 자동 스크립트 실행
# Container에 접속
docker exec -it mycentos7 /bin/bash

# Redis 자동 설치 스크립트 실행
sh install_redis 7.0.8
  • Redis 실행
redis-7.0.8/src/redis-server

참고 링크

0개의 댓글