티스토리 뷰

반응형

init.d 스크립트는 일반적으로 운영 체제를 시작할 때 실행되는 서비스를 구성하는데 사용됩니다. 하지만 도커 컨테이너는 운영 체제를 시작하는 것이 아니라, 이미 실행되고 있는 운영 체제 상에서 격리된 환경을 제공합니다.
따라서 init.d 스크립트를 실행하는 것은 도커 컨테이너에서는 불가능합니다.

 

또한 아래와 같이 서비스를 enable 하는 방법도 도커에서는 사용이 불가합니다.

sudo systemctl enable ssh.service

 

"docker ps" 하고 컨테이너ID를 확인하고, 컨테이너 폴더(/var/lib/docker/containers/컨테이너ID)로 이동하여 config.v2.json 을 찾습니다.

$ docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED       STATUS       PORTS                                                                                         NAMES
4909abfa42bf   jenkins/jenkins:lts   "/usr/bin/tini -- /u…"   7 weeks ago   Up 4 weeks   50000/tcp, 0.0.0.0:2400->22/tcp, :::2400->22/tcp, 0.0.0.0:8181->8080/tcp, :::8181->8080/tcp   jm_jenkins

$ cd /var/lib/docker/containers/4909abfa42bfa14fad6bc010a11def357d124e51a00bc06038f5331cff402fcb
$ ls -al
drwx--x--- 4 root root    4096  2월  6 09:28 ./
drwx--x--- 3 root root    4096  1월 15 13:30 ../
-rw-r----- 1 root root 7467666  3월 11 17:18 4909abfa42bfa14fad6bc010a11def357d124e51a00bc06038f5331cff402fcb-json.log
drwx------ 2 root root    4096  1월 15 13:30 checkpoints/
-rw------- 1 root root    4132  2월  6 09:23 config.v2.json
-rw-r--r-- 1 root root    1589  2월  6 09:23 hostconfig.json
-rw-r--r-- 1 root root      13  2월  6 09:23 hostname
-rw-r--r-- 1 root root     174  2월  6 09:23 hosts
drwx--x--- 2 root root    4096  1월 15 13:30 mounts/
-rw-r--r-- 1 root root     589  2월  6 09:23 resolv.conf
-rw-r--r-- 1 root root      71  2월  6 09:23 resolv.conf.hash

config.v2.json 파일에서 쉘의 Path를 확인 합니다.

쉘의 Path는 "Args" 밑에 있을수도 있고, "Path"에 있을수도 있습니다.

아래 내용은 json 내용을 알아보기 어려워 json 컨버터를 이용하여 변환한 내용입니다.

qhedge@qhedge-Precision-5820-Tower:/ssd/mysql$ docker inspect jm_jenkins
[
    {
        "Id": "4909abfa42bfa14fad6bc010a11def357d124e51a00bc06038f5331cff402fcb",
        "Created": "2023-01-15T04:30:34.387373604Z",
        "Path": "/usr/bin/tini",
        "Args": [
            "--",
            "/usr/local/bin/jenkins.sh"
        ],
   ...
]

jenkins.sh 또는 entrypoint 파일을 확인하세요.

도커로 로그인 하고, 도커 내에있는 쉘 파일을 엽니다.

(※ 쉘 파일은 호스트 서버가 아닌 컨테이너 안에 있는 파일이니 주의 바랍니다.)

$ docker exec -it jm_jenkins bash

$ vi /usr/local/bin/jenkins.sh

jenkins.sh 쉘에 서비스 기동 명령을 추가하면 도커 기동시 자동 실행 됩니다.

스크립트 하단에 넣으면 중간에 빠져 나가는 경우가 있으므로 상단부에 추가합니다.

#! /bin/bash -e

# SSHD start
service ssh start

'프로그램 > 우분투' 카테고리의 다른 글

screen : Permission denied  (0) 2023.04.08
grep 사용 시 "grep" 문자 제외하기  (0) 2023.04.06
도커 백업 및 복구  (0) 2023.04.04
우분투 한글 설치  (0) 2020.03.02
우분투 포트포워딩(rinetd)  (0) 2020.03.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함