반응형
윈도우에 docker를 설치하고 centos를 설치한다.
# centos 이미지를 받는다.
docker pull centos
# centos이미지로 컨테이너를 등록/실행한다. 실행 후 /bin/bash를 실행한다. (즉, 쉘로 들어간다.)
docker run -i -t centos /bin/bash
centos bash에 접속하여 systemctl 실행 시 아래와 같은 오류가 발생할 수 있다.
[root@607577d0b861 /]# systemctl
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
해결방법
centos를 설치하고 처음 실행 시 옵션을 주어 아래와 같이 실행 시 systemctl을 정상적으로 실행 할 수 있다.
docker run --privileged -d --name centos centos /sbin/init
#-------------
# 옵션 설명
#-------------
# run : 실행한다.
# --privileged : 호스트의 모든 장치를 사용한다는 의미 (기본적으로 도커의 컨테이너는 보안상의 이유로 호스트 장치에 접근할수 없게 되어 있다.)
# -d : 백그라운드로 실행..
# --name centos : 컨테이너 이름은 centos로 지정
# centos : 이미지 이름
# /sbin/init : sbin/init를 실행
docker run --privileged -d --name centos centos /sbin/init
이후 컨테이너 내부 쉘로 접근 시
docker exec -it <컨테이너이름> bash
docker exec -it cenots bash
docker run -i -t centos /bin/bash 로 컨테이너를 생성할 경우 name은 임의로 지정된다. 생성된 컨테이너에서 세팅이나 작업을 진행했다고 가정하고.. 다시 옵션을 변경하여 기존 컨테이너를 띄울 순 없다.
이럴땐 commit 명령으로 이미지를 새로 만들고, 만든 이미지를 띄우는 방식으로 기존 컨테이너를 그대로 쓸 수 있다.
# 실행중인 도커 컨테이너를 조회
docker ps -a
# 새로 띄울 컨테이너를 commit 명령으로 이미지로 생성, 만약 실행중이라면 docker stop <컨테이너명> 으로 중지 후 실행
docker commit <기존컨테이너명> <신규이미지명>
ex) docker commit myCentos myNewCentos
# 이미지 목록을조회하여 신규 이미지가 있는지 확인
docker images
# 생성된 이미지로 컨테이너 생성
docker run --privileged -d --name <컨테이너명> <이미지명> /sbin/init
ex) docker run --privileged -d --name myNewCentosCon myNewCentos /sbin/init
반응형
'개발 > docker' 카테고리의 다른 글
docker 파일 복사 전송 가져오기 (0) | 2022.08.22 |
---|---|
docker 컨테이너에 root로 접속하기 (0) | 2022.08.21 |
docker에서 mssql 설치 (0) | 2022.08.21 |
docker-compose.yml (0) | 2021.01.18 |
댓글