코딩 범고래의 해저동굴

docker 로 Rocky 서버 띄우기 본문

Dev Ops

docker 로 Rocky 서버 띄우기

코딩범고래 2022. 7. 22. 17:58

현재 회사 내에서 사용하는 Linux 서버가 대체로 Rocky라는 팀장님의 말씀을 듣고

rocky로 컨테이너를 띄워보았다.

 

와중에 이전 linux에서 고질적으로 systemctl이 실행 안되던 부분이

(단순, 컨테이너를 띄울 때 --privileged 옵션만 해주면 되는게 아니었나보다)
특정 옵션과 함께 컨테이너를 run 해주니 멀쩡하게 실행되어서 

나중엔 그런 삽질을 안하려고 끄적여본다 

 

우선 Rocky Linux는 공식 docker 이미지가 존재한데, 해당 사이트에 있는 대로

image를 아래와같이

docker run -i -t -d --privileged --name [컨테이너명] -p [포트포워딩] \
-v [볼륨옵션] rockylinux /usr/sbin/init

"rockylinux" 로만 호출을 하면 작동을 안한다.

 

 

아래와 같이 rockylinux/rockylinux를 해줘야지 작동을 한다.

docker run -i -t -d --privileged --name [컨테이너명] -p [포트포워딩 옵션] \
-v [볼륨 옵션] rockylinux/rockylinux /usr/sbin/init

예) docker run -i -t -d --privileged --name test_server -p 30000:80 \
-v /data/volume/test:/data/test rockylinux/rockylinux /usr/sbin/init

끝에 있는 

"/usr/sbin/init" 는 usr/sbin/init을 컨테이너를 띄우면서 함께 실행하겠다는 건데,

이 옵션과 --privileged 옵션이 함께 해야 내부에서 systemctl이 정상작동 하더라..

-i -t 는 콘솔 인풋, 아웃풋 옵션이며 bash를 통해 명령어 입력/출력확인 시 꼭 필요한 옵션이다

-d는 데몬으로 컨테이너를 돌리겠다는 것으로 
docker run 명령어 실행시 갑작스레 해당 컨테이너로 접속되는 사태를 막아주는 옵션이다.

꼭 위 옵션들은 귀찮더라도 넣어주는 것이 

컨테이너를 삭제하고 다시 만드는 불상사를 없애준다.

(그 불상사를 나는 많은 실험을 통해 당해봤다)

 

정말 할 수록 깊고 깊은 펭귄좌(리눅스)의 세계..

 

기존에는 컨테이너를 새로 만들 때

docker run --privileged [옵션들] --name [컨테이너명] centos:7 /bin/bash

 

와 같이 끝에 /bin/bash 옵션을 붙였었는데, 

이는 attach로 들어갈 때 편하게 들어가기 위해서였다.

 

하지만 이젠 /usr/sbin/init 옵션을 주고,

 

접속해서 작업할 때 마다

 

docker exec -itu 0 [서버명] /bin/bash

를 통해 접속할 수 있다.

여기셔 -i -t 옵션은 명령어 입/출력을 위해 꼭 필요한 옵션이며

-u 0 옵션은 root계정으로 접속하겠다는 옵션이다.

 

attach 하는 것이 조금 불편해졌지만 systemctl을 사용 못해 삽질하는것 보다야 나은 것 같다.


PS. Rocky는 재밌는 점이, exit명령어를 입력하고 나오더라도

 계속 컨테이너가 돌아간다. 

docker를 통해 해당 컨테이너를 stop해줘야 그제서야 멈춘다.

이로인해 거지같은 ctrl + P + Q  명령어를 통해 빠져나와야 하는 상황은 피할 수 있다.

(물론 익숙해지니 거지같진 않다)

Comments