오류 메시지
System has not been booted with systemd as init system (PID 1). Can't operate.
참고
- [Ubuntu] docker container 에서 systemctl 사용시 발생하는 문제: System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down - blog
- [리눅스] docker ubuntu /sbin/init 및 systemctl 사용하기(ubuntu init) - blog
해결
실행 시 옵션
docker는 기본적으로 컨테이너에 systemctl
을 사용하지 못하도록 되어있다고 함 (권한을 제한하기 위함)
이를 해결하기 위해서는 container 를 하기 옵션을 주어 새로 생성해야한다.
* --privileged=true
* /sbin/init
# 기본
docker run -it -d --privileged=true --name "name" imagename:tag /sbin/init
# ubuntu 컨테이너 실행 명령어
docker run -d --name ubuntu -p 22:22 -it --privileged=true ubuntu:20.04 /bin/init
Dockerfile
Dockerfile 생성
FROM ubuntu:20.04
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Seoul
RUN sed -i 's/kr.archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
RUN apt update \
&& apt install -qq -y init systemd \
&& apt install -qq -y build-essential \
&& apt install -qq -y tzdata \
&& apt install -qq -y vim curl \
&& apt-get clean autoclean \
&& apt-get autoremove -y \
&& rm -rf /var/lib/{apt,dpkg,cache,log}
CMD ["/sbin/init"]
이미지 빌드 & 컨테이너 실행
# 이미지 빌드
docker build -t woogie/ubuntu:20:04 .
# 컨테이너 실행
docker run -d --privileged --name ubuntu -p 22:22 -it woogie/ubuntu:20.04 /sbin/init