방금 Docker를 시작하고 richt를 시작하여 첫 번째 dockerized Apache 2 / PHP 환경을 설정하는 방법을 알아 내려고합니다. 지금까지는 / var / log / apache2에 기록되는 로그 파일을 사용한 전체 Linux VM을 사용하고 있으며 "logrotate"를 사용하여 매일 새 파일로 홉핑합니다.
로그 파일은 주로 즉각적인 오류 감지 (예 : 서버에 로그온하고 현재 access.log 및 error.log 파일을 여는 데 덜 사용)와 fail2ban에 사용되었습니다.
내가 정확하다면 Docker 환경에서는 불가능합니다. 주로 일반적으로 컨테이너에 로그인하여 로그를 볼 수 없기 때문입니다. 컨테이너를 제거하면 로그도 손실됩니다.
따라서 해당 상황에서 access.log / error.log를 사용 / 에뮬레이션 / 대체하는 가장 일반적인 방법은 무엇입니까? 프로덕션 및 개발 환경 모두에 공통적 인 솔루션은 무엇입니까?
내 생각에는 NFS 공유 (느리고 조심하지 않으면 파일 이름 충돌이 발생할 수 있음) 및 logstash (소규모 사이트 또는 개발 환경에서 노력할 가치가 있는지 확실하지 않은가)가 포함되어 있지만 똑똑한 사람들이라고 확신합니다. 더 나은 솔루션을 생각해 냈습니까?
차이가 있는지 확실하지 않지만 현재 Docker 이미지를 php : 5.6-apache 기반으로하고 있습니다.
docker attach <container name>
컨테이너에서 stdout을 보는 좋은 방법입니다. 그러나 Ctrl + D 또는 Ctrl + C를 수행하면 진행중인 작업이 종료됩니다 (시그 킬). 따라서 이스케이프 키를 사용하여 올바르게 분리해야합니다ctrl+p+q
. 컨테이너에 껍질을 넣고 싶다면exec
위의 명령을 사용하는 것이 좋습니다.