Docker 문제를 디버깅하는 데 문제가 있습니다. 호스트인 내 컴퓨터에서는 apt
이미지의 모든 // 명령이 중단되고 그 이유를 이해할 수 없습니다.apt-get
apt-cache
debian:jessie
docker가 있는 다른 머신에서 실행할 때(예:)
docker run --rm debian:jessie apt list
이 작업은 몇 초 정도 걸리며 그러면 목록이 나타납니다. 내 컴퓨터에서는 영원히(>30분) 정지되고 전체 CPU 코어를 사용합니다.
이 문제를 디버깅하는 방법에 대한 아이디어가 있습니까?
저는 괜찮은 최신 하드웨어와 함께 Fedora 35(x86_64)를 사용하고 있습니다. 이미 나는
- 다른 명령을 실행해 보았습니다. 모두 CPU 코어를 차지하고 정지되었습니다. 적어도 시도는 해봤
apt update
지만,,, 물론 기억이 나지 않는 것도 있습니다.apt upgrade
apt list
apt show apt
apt-cache showpkg apt
setenforce 0
호스트 시스템에서 selinux를 비활성화하려고 시도했지만 효과가 없었습니다.- docker 매개변수를 통해 네트워크 취소를 시도했지만
--network none
효과가 없었습니다. - Fedora 호스트 시스템을 업데이트했지만 효과가 없었습니다.
- docker-ce 버전이 최신 안정 버전인지 확인하세요.
- 시도했습니다
docker run --rm debian:latest apt list
(예: 최신 데비안). 작동하지만 이전 버전이 필요합니다(최신 버전이 아닌 Jessie). - Fedora 방화벽을 중지하고
systemctl stop firewalld.service
(@rubynorails에게 감사드립니다)를 통해 도커 데몬을 다시 시작해 보았지만systemctl restart docker
효과가 없었습니다.
여기에서 어떻게 갈지에 대한 아이디어가 있나요?
답변1
몇 시간의 시행착오 끝에 다른 호스트에서 실행되는 또 다른 이미지를 통해 올바른 방향으로 나아갈 수 있었습니다. fedora[1][2]의 기본 ulimit에 문제가 있는 것 같습니다.
다음은 잘 작동합니다.
docker run --rm --ulimit nofile=10000:10000 -ti debian:jessie apt list
방금 모든 컨테이너/도커 빌드에 매개변수를 추가했는데 --ulimit
지금까지는 괜찮았습니다.
답변2
다음을 기반으로 편집됨@jsbillings아래 의견 - 참고하세요.@펠허이 특정 답변으로 문제가 해결되지 않았지만 동일한 문제 설명을 사용하는 사용자에게 적용될 수 있다는 피드백Docker 버전이 v20.0보다 낮습니다.
원래 답변:
firewalld
내 기억에 따르면 Docker는 RHEL 시스템에서 기본적으로 활성화되어 제대로 작동하지 않았습니다. Ubuntu 시스템처럼 작동하도록 하려면( ufw
기본적으로 비활성화되어 있음) 다음을 중지하십시오 firewalld
.
sudo systemctl stop firewalld
...그리고 [선택적으로] 나중에 이런 일이 발생하지 않도록 비활성화합니다.
sudo systemctl disable firewalld
docker 데몬을 다시 시작해야 할 수도 있습니다.
sudo systemctl restart docker
또는systemctl restart docker-ce
이것이 최선의 보안 방법이라고 말하는 것은 아니지만, 개인적으로 기업 환경에서는 firewalld
네트워크 기반 방화벽 규칙을 통해 액세스 정책을 제어하는 것이 더 쉽기 때문에 인스턴스가 구축되자마자 항상 비활성화합니다. 호스트 기반 규칙보다 훨씬 더 많은 것입니다.