도커 states의 용기는 기본적으로사용자 및 파일 권한 설정 (고정 표시기-작성 버전 3)
"... 매우 안전한지, 당신 안에 당신의 실행중인 프로세스를 돌봐 특히
- 사용 공식 IMA : 권한이없는 사용자로 용기 (즉, 루트가 아닌) "
결과, 나는에 시도했다 사용자 실행을 처리 GES 적절하게
COPY
코드 및 구성 파일, 디렉토리의 모든 파일이 "만들 때 대신을 COPY
를 사용하여 ... 문서 here에 명시된대로 UID와 GID가 0입니다 (루트 소유권).
질문 : 보안 위험 파일과 디렉토리가 루트가 소유하지만, 실행중인 프로세스가 www-data
처럼 루트가 아닌 사용자가 소유 한 경우는 아직이 있습니까? php-fpm와 예를 들어
[email protected]:/var/www/html# ls -l
total 1220
-rw-rw-r-- 1 root root 5931 May 10 12:28 index.php
drwxrwxr-x 3 root root 4096 May 10 12:28 logs
-rw-rw-r-- 1 root root 28 May 10 12:28 robots.txt
[email protected]:/var/www/html# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:14 ? 00:00:00 php-fpm: master process (/usr/lo
www-data 5 1 0 14:14 ? 00:00:00 php-fpm: pool www
www-data 6 1 0 14:14 ? 00:00:00 php-fpm: pool www
root 7 0 0 14:19 ? 00:00:00 bash
root 12 7 0 14:19 ? 00:00:00 ps -ef
방법 (어디)에 올바르게 chown
및 chmod
내 파일 그래서, 내가 궁금합니다. 내 연구에서, 이것은 docker-compose를 사용하는 경우 덜 직관적 인 것처럼 보입니다. 나는 docker-compose YAML 파일 (버전 3)과 컨테이너 별 Dockerfiles를 모두 사용하고 있습니다. 컨테이너의 Dockerfile 끝에 chown
을 삽입하면 변경 사항이 적용되지 않는 것 같습니다. 아마도 docker-compose.yml에 정의 된 볼륨이 나중에 만들어 졌기 때문일 것입니다.
고정 표시기-compose.yml :
version: '3'
services:
fpm:
build: ./fpm
container_name: "fpm"
volumes:
- data_volume:/var/www/html
ports:
- "9000"
restart: always
volumes:
data_volume:
./fpm Dockerfile : 다른 고정 표시기-작성 버전
FROM php:7-fpm
RUN mkdir -p /var/www/html/
COPY . /var/www/html/
RUN find /var -exec chown www-data:www-data {} \;
RUN find /var -type d -exec chmod 755 {} \;
RUN find /var -type f -exec chmod 644 {} \;
, 그것은 어려운 여기에 두 가지 구성의 일부 조각을이다 이 주제를 둘러싼 다양한 웹 기사, 버그 수정 및 기능 요청을 분류 할 수 있습니다. 도커 작성 버전 3을 목표로 확실한 방향/응답을 얻으려고합니다.
귀하의 설명은 용기가 용적을 필요로하지 않는다는 것을 인식하는 데 도움이되었습니다. 소스 코드 및 구성을 작성시 직접 Dockerfiles에 복사 할 수 있습니다. 또한 그 시점에서 파일 소유권과 사용 권한을 설정할 수 있습니다. 그러나 버전 3에서는 공유 볼륨에 데이터를 복사하고 권한을 설정하는 가장 좋은 방법은 무엇입니까? 내 nginx 및 php 컨테이너는 동일한 파일 및 폴더에 대한 액세스가 필요하며 동일한 데이터를 두 개의 다른 이미지로 두 번 복사하지 않아도됩니다. – littleK
예, 컨테이너간에 데이터를 공유하려면 볼륨이 표준입니다. 또한 해당 태스크에 특화된 다른 컨테이너에서 볼륨을 작성하고 관리 할 수 있습니다. 공유되는 내용에 대해 구체적으로 설명해 주실 수 있습니까? – JulioHM
그것은 모두 서버 측 PHP 코드입니다. 내가 읽은 것부터 PHP 코드는 php-fpm 컨테이너에서만 액세스 할 수 있어야하지만 내 nginx 컨테이너에도 액세스해야한다는 것을 알게됩니다. 그렇지 않으면 404가됩니다. – littleK