[docker] conatiner내부에서 docker 실행
Data Engineer 과정중 shell에 접속하여 이것저것 해볼 수 있는 환경이 있었다.. 당연히 여기서 docker 설치 및 sqoop 테스트, docker run 테스트를 진행하려고 처음부터
- docker 설치
- docker-compose 설치
- git clone
- docker 실행
- 과정진행 순서대로 하려고 하는데 4번에서 systemctl 명령어 입력하면
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
이나오고
service docker start
service start docker
를 입력하면
start: unrecognized service
가 나오고
dockerd
를 입력하면
iptables v1.8.4 (legacy): can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
iptables -L
을 입력하면
iptables v1.8.4 (legacy): can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
가 나오고
커널 업데이트(apt-get dist-upgrade) , iptables 업데이트 다 해봤는데 안됐다
원인
아마 원인은 접속한 shell이 컨테이너 위에있는 docker내부라고 생각된다. 이 docker가 실행될 때 권한이 없고, iptables에 접근할 수 없으므로 업데이트도 안되는것이다.
의존성 업데이트
sudo apt-get update
업데이트할 패키지들의 목록을 최신으로 갱신한다. 실제로 패키지를 업그레이드 하는게 아니다.
sudo apt-get upgrade
update 로 갱신된 최신 패키지들을 실제로 업그레이드 한다.
sudo apt-get dist-upgrade
upgrade 는 의존성 체크를 하지 않고 업그레이드하지만, dist-upgrade는 의존성 체크를 하면서 위의 upgrade에서 수행되지 못한 dependency 까지 설치해준다.
해결
해결 방법은 이 docker가 실행될 때 권한을 부여하는법이 있을텐데,, 이건 제공해주는 shell을 이용하기때문에 안될 것 같다 ㅠㅠ
이 문서는
jhy156456에 의해 작성되었습니다.
마지막 수정 날짜:2022-12-08 18:42:42