Compose: рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдорд╛рдЙрдВрдЯреНрд╕ рдиреЗ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 'рд░реВрдЯ' рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  33рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: docker/compose

рдпрд╣ рдирд╛рдорд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдХреЛрдИ "рдбреЗрдЯрд╛ рд╡реЙрд▓реНрдпреВрдо рдХрдВрдЯреЗрдирд░ рдирд╣реАрдВ", рдХреЛрдИ "рд╡реЙрд▓реНрдпреВрдо-рд╕реЗ") рдФрд░ docker-compose.ymlред

рдпрд╣рд╛рдВ рд▓рдХреНрд╖реНрдп рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рджреЛ рд╕реЗрд╡рд╛рдУрдВ 'рдРрдкреНрд╕рд╡рд░' рдФрд░ 'рд╕рд░реНрд╡рд░-рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реНрдХреНрд▓' рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ "рд╡реЙрд▓реНрдпреВрдо:" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред .

'рд╕рд░реНрд╡рд░-рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реНрдХреНрд▓' рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

FROM        ubuntu:14.04
MAINTAINER xxx

RUN apt-get update && apt-get install -y [pgsql-needed things here]
USER        postgres
RUN         /etc/init.d/postgresql start && \
            psql --command "CREATE USER myUser PASSWORD 'myPassword';" && \
            createdb -O diya diya
RUN         echo "host all  all    0.0.0.0/0  md5" >> /etc/postgresql/9.3/main/pg_hba.conf
RUN         echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf
CMD         ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]

Adn docker-compose.yml рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

version: '2'
services:
    appserver:
        build: appserver
        depends_on:
            - server-postgresql
        links:
            - "server-postgresql:serverPostgreSQL"
        ports:
            - "1234"
            - "1235"
        restart: on-failure:10
    server-postgresql:
        build: serverPostgreSQL
        ports:
            - "5432"
        volumes:
            - db-data:/volume_data
        restart: on-failure:10
volumes:
    db-data:
        driver: local

рдлрд┐рд░ рдореИрдВ docker-compose up -d рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░-рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реНрдХреНрд▓ рдХрдВрдЯреЗрдирд░ рдХреЛ docker-compose exec server-postgresql bash рд╕рд╛рде рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рддреНрд╡рд░рд┐рдд ls /volume_data рдкреНрд░рдХрдЯ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдореИрдВ cd рдФрд░ touch testFile рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ "рдЕрдиреБрдорддрд┐ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреА рдЧрдИред рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рддреНрд╡рд░рд┐рдд ls -l рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ volume_data рдХрд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ root:root ред

рдЕрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ USER postgres рд╣реИ, рдЬрдм рдореИрдВ docker-compose exec рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдЗрди рд╣реЛрддрд╛ рд╣реВрдВ (рдФрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реНрдХреНрд▓ рдбреЗрдореЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЗрд╕рд▓рд┐рдП рдпрд╣ /volume_data рдирд╣реАрдВ рд▓рд┐рдЦ рдкрд╛рдПрдЧрд╛)ред
рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реЛ рдЧрдИ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ: docker-compose exec --user root server-postgresql bash рдФрд░ cd /volume_data рдФрд░ touch testFile рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рд╣реЛрд╕реНрдЯ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмреАрдЪ рдЕрдиреБрдорддрд┐ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдХрднреА-рдХрднреА рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрдВрдЯреЗрдирд░ рдПрдХ рд╣реЛрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреВрдирд┐рдХреНрд╕ рдЕрдиреБрдорддрд┐ рддреНрд░реБрдЯрд┐ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ /volume_data рдХреЛ 'рд░реВрдЯ: рд░реВрдЯ' рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ)ред

рддреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose.yml рдореЗрдВ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ:

version: '2'
services:
    appserver:
        [...]
    server-postgresql:
        [...]
        volumes:
            - db-data:/volume_data:myUser:myGroup
        [...]
volumes:
    db-data:
        driver: local

рдХреЗрд╡рд▓ _dirty_ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣ рд╣реИ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реЗ USER posgres рдирд┐рд░реНрджреЗрд╢ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛, рдФрд░ ENTRYPOINT рдХреЛ рдмрджрд▓рдирд╛ рддрд╛рдХрд┐ рдпрд╣ рдПрдХ рдХрд╕реНрдЯрдо "init_script.sh" рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░реЗ (рдЬрд┐рд╕реЗ 'рд░реВрдЯ' рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ USER postgres ), рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ /volume_data рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдЧреА рддрд╛рдХрд┐ 'postgres' рдЙрд╕ рдкрд░ рд▓рд┐рдЦ рд╕рдХреЗ, рдлрд┐рд░ su postgres рдФрд░ postgresql daemon (рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЧрдВрджрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ Dockerfile рдФрд░ docker-compose.yml рдХреЛ рдПрдХ рдЧреИрд░ рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рд░рдирдЯрд╛рдЗрдо ENTRYPOINT рдЗрд╕ рддрдереНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдПрдХ рдорд╛рдЙрдВрдЯреЗрдб рд╡реЙрд▓реНрдпреВрдо docker-compose.yml рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

arevolumes statu0-triage

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдпрд╣рд╛рдВ рд╕рдорд╛рдЪрд╛рд░ рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рдмрдЧ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдмрджрд▓ рдЧрдпрд╛:

рдореЗрд░реЗ Dockerfile рдореЗрдВ , _рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'postgres'_ рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЗрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛:

# ...
RUN    mkdir /volume_data
RUN   chown postgres:postgres /volume_data

USER postgres
# ...

рдпрд╣ рдЬреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ /volume_data рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рдЙрд╕ рдкрд░ рд▓рд┐рдЦ рд╕рдХреЗрдВред
рдпрд╣ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЕрдм рдореИрдВрдиреЗ docker-compose.yml рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ: рдЗрд╕рд▓рд┐рдП directory_name_db-data рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ /volume_data рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдмрдиреА рд░рд╣рддреА рд╣реИрдВ! .
рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдм, рдореЗрд░реЗ рдкрд╛рд╕ _pre-рдореМрдЬреВрджрд╛_ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ /volume_data рд╕рдВрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдирд╛рдорд╛рдВрдХрд┐рдд рд╡реЙрд▓реНрдпреВрдо рдЖрд░реЛрд╣рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рдЗрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдЕрдЧрд░ рдпрд╣ рдЗрд░рд╛рджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИ? (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдореЗрд░реА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИ!)

рд╕рднреА 33 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдбреЙрдХрд░ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рд╣рдо рдЗрд╕реЗ рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

version: '2'
services:
  web:
    image: alpine:3.3
    volumes: ['random:/path']

volumes:
  random:
$ docker-compose run web sh
/ # touch /path/foo
/ # ls -l /path
total 0
-rw-r--r--    1 root     root             0 Apr  5 16:11 foo
/ # chown postgres:postgres /path/foo
/ # ls -l /path
total 0
-rw-r--r--    1 postgres postgres         0 Apr  5 16:11 foo
/ # 
$ docker-compose run web sh
/ # ls -l /path
total 0
-rw-r--r--    1 postgres postgres         0 Apr  5 16:11 foo

рдЖрдк рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рдирд╛рдорд┐рдд рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдХрдВрдкреЛрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ), рд▓реЗрдХрд┐рди рдЖрдк docker-compose up рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд╛рдорд┐рдд рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдбреЙрдХрд░ рдХреНрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рдбреЙрдХрд░ рдпрд╛ рдХрдВрдкреЛрдЬрд╝ рд╕рдорд╕реНрдпрд╛ рдереА, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдбреЙрдХрд░ рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рдпреЛрдЬрдирд╛ рд╣реИ, рдХреНрдпрд╛ рдореБрдЭреЗ рд╡рд╣рд╛рдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдФрд░ chown рдХреЛ 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡реЙрд▓реНрдпреВрдо рджреЗрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ ( docker-compose -p client_name up ) рдХреЗ рд▓рд┐рдП рдирдП рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдХрдВрдкреЛрдЬрд╝ рдПрдХ рдХрд╕реНрдЯрдо рдиреЗрдЯрд╡рд░реНрдХ client_name_default рдмрдирд╛рдПрдЧрд╛, рдпрд╣ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдЧрд╛ client_name _appserver_1 рдФрд░ client_name _server-postgresql_1 рдФрд░ _рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╡реЙрд▓реНрдпреВрдо client_name_db-data рдмрдирд╛рдПрдЧрд╛ред рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рдореБрдЭреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдВрдЬреАрдХрд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде (_manually_ "рд▓реЙрдЧрд┐рдВрдЧ" рдХрдВрдЯреЗрдирд░ рдореЗрдВ sh рдФрд░ chown рд╡реЙрд▓реНрдпреВрдо рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде), рдореЗрд░реЗ рдкрд╛рд╕ рдирдП рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╣рд╛рде рд╕реЗ рджреЗрдЦрднрд╛рд▓ рдХреА рдЬрд╛рдПрдЧреАред

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЙрдХрд░ рдПрдкреАрдЖрдИ рдореЗрдВ, рд╣рдо рд╡реЙрд▓реНрдпреВрдо рдмрдврд╝рддреЗ рд╕рдордп ro рдпрд╛ rw (рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдпрд╛ рдкрдврд╝рдиреЗ-рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП) рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ user:group рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдореЗрд░реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдпрд╣рд╛рдВ рд╕рдорд╛рдЪрд╛рд░ рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рдмрдЧ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдмрджрд▓ рдЧрдпрд╛:

рдореЗрд░реЗ Dockerfile рдореЗрдВ , _рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'postgres'_ рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЗрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛:

# ...
RUN    mkdir /volume_data
RUN   chown postgres:postgres /volume_data

USER postgres
# ...

рдпрд╣ рдЬреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ /volume_data рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рдЙрд╕ рдкрд░ рд▓рд┐рдЦ рд╕рдХреЗрдВред
рдпрд╣ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЕрдм рдореИрдВрдиреЗ docker-compose.yml рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ: рдЗрд╕рд▓рд┐рдП directory_name_db-data рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ /volume_data рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдмрдиреА рд░рд╣рддреА рд╣реИрдВ! .
рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдм, рдореЗрд░реЗ рдкрд╛рд╕ _pre-рдореМрдЬреВрджрд╛_ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ /volume_data рд╕рдВрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдирд╛рдорд╛рдВрдХрд┐рдд рд╡реЙрд▓реНрдпреВрдо рдЖрд░реЛрд╣рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рдЗрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдЕрдЧрд░ рдпрд╣ рдЗрд░рд╛рджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИ? (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдореЗрд░реА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИ!)

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕реЗ рдбреЙрдХрд░ 1.10.x рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдирд╛рдорд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬреЛ рдЙрдирдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рдереЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред

рдореИрдВ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдирд╛рдорд┐рдд рд╡реЙрд▓реНрдпреВрдо рднреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд░рдЪрдирд╛ рдореЗрдВ рдореИрдВ user: postgres рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдкреАрдЖрдИрдбреА тАЛтАЛтАЛтАЛ1 рднреА рдЧреИрд░-рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реЛред

Docker-compose рд▓рд┐рдП volumes рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП driver_opts рд╣реИред
chmod , chown рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рднреА local рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдпрд╣ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рд╕рдВрдмрдВрдзрд┐рдд (рдХреБрдЫ рд╣рдж рддрдХ) https://github.com/moby/moby/pull/28499

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ Moby рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓реА рд╣реИ?

@dnephin рдХрд╛ рдЙрддреНрддрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдХ рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, chown рдпрд╛ chmod рдХрдорд╛рдВрдб рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рд╡реЙрд▓реНрдпреВрдо рд░реВрдЯ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реИ, рдПрдХ рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

@jcberthon рд╕реБрдЭрд╛рдИ рдЧрдИ рд╡рд┐рдзрд┐ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╢реБрд░реБрдЖрддреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд░реВрдЯ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдлрд┐рд░ USER рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ chown/chmod рдХреЗ рдмрд╛рдж рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ "рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЫреЛрдбрд╝рдирд╛" рд╣реЛред

рдпрд╣ рдареАрдХ рд╣реИ рдпрджрд┐ рдЖрдк рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдореМрдЬреВрджрд╛ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

@ Dragon788 рдФрд░ @micheljung , рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рд▓реА рд╣реИред

рдЕрд╕рд▓ рдореЗрдВ рдЕрд╕рд▓реА рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рдбреЙрдХрд░рдлрд╛рдЗрд▓, рдореИрдВрдиреЗ VOLUME рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рдЙрд╕ рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдФрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред рд╡реЗ рдкрд░рд┐рд╡рд░реНрддрди рдЦреЛ рдЧрдП рд╣реИрдВред рдХреЗрд╡рд▓ VOLUME рдШреЛрд╖рдгрд╛ рдХреЛ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓реЗ рдЬрд╛рдХрд░ (рдпрд╛ рдЗрд╕реЗ рд╣рдЯрд╛рдХрд░, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ), рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕рд╣реА рд╣реИрдВред

рддреЛ рдЧрд▓рддреА рдереА:

FROM blabla
RUN do stuff
VOLUME /vol
RUN useradd foo && chown -R foo /vol
USER foo
CMD ["blabla.sh"]

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ chown рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЦреЛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ VOLUME рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рддреЗ рд╕рдордп, рдбреЙрдХрд░реНрдб рдирд╛рдорд┐рдд рд╡реЙрд▓реНрдпреВрдо рдХреЗ рднреАрддрд░ /vol рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ VOLUME рдШреЛрд╖рдгрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рд░реВрдЯ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде)ред рдЗрд╕рд▓рд┐рдП рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП blabla.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓рдХрд░:

FROM blabla
RUN do stuff
RUN useradd foo && chown -R foo /vol
USER foo
VOLUME /vol
CMD ["blabla.sh"]

рд╕рдорд╕реНрдпрд╛ рд╕реБрд▓рдЭ рдЧрдИ рд╣реИред

@jcberthon рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ docker-compose.yml рдореЗрдВ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╡реЙрд▓реНрдпреВрдо/рд╡реЙрд▓реНрдпреВрдо рдХреИрд╕реЗ рдмрд╛рдВрдзрддреЗ рд╣реИрдВ?

рдореИрдВ рдлреЗрдбреЛрд░рд╛ рдкрд░ рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЗрд╕рд▓рд┐рдП, SELinux рд╕рдХреНрд╖рдо) рдФрд░ рдЙрдкрд░реНрдпреБрдХреНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдХреЛрдИ рд░реВрдЯ рдирд╣реАрдВ) рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реЙрд▓реНрдпреВрдо рд╕рдорд╕реНрдпрд╛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд░реЛрдзрдХ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рдордХрд╛рдЬ рдореЗрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдирд╛ рдФрд░ рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдмрдХреБрдЫ рдЪрд▓рд╛рдирд╛/рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХрд░рдирд╛ рд╣реИред

рдирдорд╕реНрддреЗ @renanwilliam рдФрд░ @ egee-irl

рдореИрдВ рдХрдИ рдУрдПрд╕ рд╕рд╣рд┐рдд рдЙрдкрд░реНрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдлреЗрдбреЛрд░рд╛ 26 рдФрд░ рд╕реЗрдВрдЯреЛрд╕ 7 рджреЛрдиреЛрдВ SELinux рд▓рд╛рдЧреВ, рдЙрдмрдВрдЯреВ 16.04, 17.10 рдФрд░ рд░рд╛рд╕реНрдкрд┐рдпрди 9 рддреАрдиреЛрдВ рдХреЗ рд╕рд╛рде AppArmor рд╕рдХреНрд░рд┐рдп (amd64 рдФрд░ armhf рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЗ рд╕рд╛рде)ред

рдЗрд╕рд▓рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВрдиреЗ рдЕрдм рдЕрдкрдиреЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ VOLUME ... рдШреЛрд╖рдгрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдбреЙрдХрд░рдлрд╛рдЗрд▓ (рдЬреИрд╕реЗ useradd -u 8002 -o foo ) рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рддреЗ рд╕рдордп рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реВрдВред рддрдм рдореИрдВ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЙрдЪрд┐рдд рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯ рдкрд░ рдЙрд╕ рдпреВрдЖрдИрдбреА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рддреЛ рдЕрдЧрд▓рд╛ рдХрджрдо рдореЗрдЬрдмрд╛рди рдкрд░ /vol рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ "рд▓рдЯрдХрди" рдмрдирд╛рдирд╛ рд╣реИ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ /opt/mycontainer1/vol , рдЗрд╕рд▓рд┐рдП

$ sudo mkdir -p /opt/mycontainer1/vol
$ sudo chown -R 8002 /opt/mycontainer1/vol
$ sudo chmod 0750 /opt/mycontainer1/vol

рдлрд┐рд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлреВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╕рдордп, рдпрд╣ /opt/mycontainer1/vol рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

$ sudo -u docker-adm docker run --name mycontainer1 -v /opt/mycontainer1/vol:/vol mycontainer1-img

SELinux рдЖрдзрд╛рд░рд┐рдд рд╣реЛрд╕реНрдЯ рдкрд░, рдЖрдк рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП :z :Z рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдбреЙрдХрд░ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЯреИрдЧ рдХрд░ рд╕рдХреЗред z рдФрд░ Z рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЕрд░рдХреЗрд╕ z рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдЯреИрдЧ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП SELinux рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХреЗ (рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░рддреЗ рд╣реИрдВ), рдЬрдмрдХрд┐ рдЕрдкрд░рдХреЗрд╕ Z рдЗрд╕реЗ рдЯреИрдЧ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рд╡рд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рддреЛ рдлреЗрдбреЛрд░рд╛ рдкрд░ SELinux рдХреЗ рд╕рд╛рде рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ:

$ sudo -u docker-adm docker run --name mycontainer1 -v /opt/mycontainer1/vol:/vol:Z mycontainer1-img

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ : рдЖрдк рдпрд╣рд╛рдВ рдореЗрд░рд╛ рд░реЗрдкреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/jcberthon/unifi-docker рдореИрдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдмрддрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣реЛрд╕реНрдЯ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдирд╛ рдХрдВрдЯреЗрдирд░ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдФрд░ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ , рдореИрдВ рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рд▓рдВрдмреА рджреЗрд░реА рдХреЗ рд▓рд┐рдП рд╣реВрдВ ред рд╕рд╛рд▓ рдХреЗ рдЗрд╕ рдЕрдВрдд рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдЬреНрдпрд╛рджрд╛ рдЦрд╛рд▓реА рд╕рдордп рдирд╣реАрдВ рд╣реИ...

рддреЛ, рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреА рдХрд╣рд╛рдиреА рдЫреЛрдЯреА:

RUN mkdir /volume_data
RUN chown postgres:postgres /volume_data

рд╡реЙрд▓реНрдпреВрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдирд╛ рдФрд░ chown рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЙрд▓реНрдпреВрдо рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗрдЧрд╛ред

рдпрд╣ рдПрдХ рдЦрд░рд╛рдм рдХрд╛рдо рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ (рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЪрд╛рдЙрди рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдорд╛рдЙрдВрдЯ рдХреЗ рджреМрд░рд╛рди рдЙрд╕ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдирд╛)ред рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдФрд░ рдбреЙрдХрд░ рд╕реАрдПрд▓рдЖрдИ рдкрд░ рдорд╛рд▓рд┐рдХ рдФрд░ рд╕рдореВрд╣ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдпреВрдирд┐рдХреНрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдЖрд╢реНрдЪрд░реНрдп рдХрд╛ рдорд╛рд░реНрдЧ рд╣реЛрдЧрд╛ред

@villasv

рдПрдХ рдЫреЛрдЯреА рд╕реА рдпреБрдХреНрддрд┐: 2 RUN ... рдХреЛ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛ рджреЗрдВ, рдЗрд╕рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рддреЗрдВ рдмрдирдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╣реИред рддреЛ рдЖрдкрдХреА 2 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

RUN mkdir /volume_data && chown postgres:postgres /volume_data

рд▓реЗрдХрд┐рди рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ) рдХрд┐ рдЖрдкрдХреЛ VOLUME ... рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЙрд▓реНрдпреВрдо рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ (рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЙрд▓реНрдпреВрдо рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ) рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрд░реЛрдХреНрдд RUN ... рдХрдорд╛рдВрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡реЙрд▓реНрдпреВрдо рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди (рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛) рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВред

@colbygk рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдбреЙрдХрд░ рд╡рд┐рднрд┐рдиреНрди рдПрдХрд▓-рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо ( / рдФрд░ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдорд╛рдЙрдВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди AFAIK рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд┐рдирдХреНрд╕ рдорд╛рдЙрдВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рд╕рдореВрд╣ рдореИрдкрд┐рдВрдЧ рдпрд╛ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ "рдорд╛рдЙрдВрдЯ" (рдФрд░ рдЗрд╕рдореЗрдВ рдмрд╛рдЗрдВрдб-рдорд╛рдЙрдВрдЯ рд╡реЙрд▓реНрдпреВрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдХ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣реИрдВ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдХреБрдЫ рдЕрдиреНрдп рдбреЙрдХрд░ рд╡реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ), рдФрд░ рдпрд╣ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдирдХреНрд╕ рд╡реАрдПрдлрдПрд╕ рдкрд░рдд рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╕рднреА рдХрд░рддрд╛ рд╣реИ рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдореЗрдЬрдмрд╛рди рдкрд░ рдХреБрдЫ рдореИрдХ (рдЬреИрд╕реЗ SELinux, AppArmor, рдЖрджрд┐) рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрджрд┐ рдЖрдк chroot , рддреЛ рдЖрдк рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЖрдк рдХреНрд░реЛрдЯ рдХреЗ рднреАрддрд░ рдорд╛рдЙрдВрдЯ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЛ рдмрд╛рдВрдз рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдпрд╣ рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХрд┐ рдЪреЗрд░реЛрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рднреАрддрд░ рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдкреНрд░рднрд╛рд╡реА рдпреВрдЖрдИрдбреА/рдЬреАрдЖрдИрдбреА тАЛтАЛтАЛтАЛрд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдмрд╛рдБрдз- рдорд╛рдЙрдВрдЯред

рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд▓рд┐рдирдХреНрд╕ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреВрдирд┐рдХреНрд╕ рднреА) рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдЪрд╛рд▓ рдЖрдЬ рд▓рд┐рдирдХреНрд╕ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдФрд░ рд╕реАрдорд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд╛рд╕реНрддреНрд░реАрдп рдпреВрдирд┐рдХреНрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ред

@jcberthon рдЖрдкрдХреА рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж:

рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдРрд╕рд╛ рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд▓рдЧрдЗрди рдкрд░рдд рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕рд▓рд┐рдП рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЬреЗрдиреЗрд░рд┐рдХ рд╡реЙрд▓реНрдпреВрдо рд╣реИрдВрдбрд▓рд░ рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд▓реА рдЧрдИ рдЫрд╡рд┐ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди (рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░реА) рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЬреИрд╕рд╛ рдмрд╣реБрдд рд╣реА рдЕрдирдЬрд╛рди/рдХрдВрдЯреЗрдирд░ рд▓рдЧрддрд╛ рд╣реИред

рдЗрд╕ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдпреВрдЖрдИрдбреА/рдЬреАрдЖрдИрдбреА тАЛтАЛрдореИрдкрд┐рдВрдЧ рдХреЗ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ "рдпреВрдирд┐рдХреНрд╕" рдХреЗ рдЕрдиреНрдп рд╕рдорд╛рди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ:

рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рд╣реА; https://github.com/zfsonlinux/zfs/issues/4177 рдХреА рдЙрддреНрдкрддреНрддрд┐ "LXC/LXD рдХреЗ рдиреЗрддрд╛" рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдирдХреНрд╕ рдкрд░ ZFS рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реБрдИ рд╣реИ, рдЬреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ UID/GID рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдореИрдкрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗред рд▓рдЧрднрдЧ _рд╕рдЯреАрдХ_ рддрд░реАрдХреЗ рд╕реЗ рд╣рдо рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред https://github.com/zfsonlinux/zfs/issues/4177 рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдиреЗ рдкрд░ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ zfs рд╡реЙрд▓реНрдпреВрдо рдкреНрд░рдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдЗрд╕ uid/gid рдореИрдкрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рджреЗрд╡ / рд╕реАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рд╣рдо "рдЬреЗрдиреЗрд░рд┐рдХ" рдЫрд╡рд┐рдпреЛрдВ рдЬреИрд╕реЗ php/nginx (рдзрд╛рд╡рдХ) рдпрд╛ рдЧреНрд░реЗрдбрд▓/рдкрд╛рдпрдерди (рдмрд┐рд▓реНрдбрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛:

  1. рдЫрд╡рд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Dockerfile рдмрдирд╛рдиреЗ/рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  2. docker-compose yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд░рд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЪреВрдБрдХрд┐ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рд╡реЙрд▓реНрдпреВрдо (X:X:OPTION_READ_WRITE) рдХреА рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрд╕реА рддрд░рд╣ рдорд╛рд▓рд┐рдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

SOURCE:TARGET:RW:OWNER

рдореБрдЭреЗ рднреА рдпрд╣реА рддрдХрд▓реАрдлрд╝ рд╣реИред рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ, рдФрд░ рдореЗрд░реА рд╡рд┐рдзрд┐ _not_ рд╣реИ:

version: '3.5'
services:
    something:
        image: someimage
        user: '1000'
        expose:
            - 8080
        volumes:
            - dev:/app

volumes:
    dev:

рдпрд╣ EACCES: permission denied, access '/app' рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

рд╣рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╛рдиреА рдПрдХ рдирдпрд╛ рд╡реЙрд▓реНрдпреВрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЧреИрд░-рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВ?

рдирдорд╕реНрддреЗ @Redsandro

рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк someimage рдбреЙрдХрд░ рдЫрд╡рд┐ рдореЗрдВ рдпреВрдЖрдИрдбреА рдХреЛ /app рд▓рд┐рдП рдпреВрдЖрдИрдбреА рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдпрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ user: ... рд▓рд┐рдП UID рдпрд╛ GID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЫрд╡рд┐ рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдмреЗрд╢рдХ рдпрджрд┐ рдЫрд╡рд┐ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдпреВрдЖрдИрдбреА 0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдк рд╕реЗрд╡рд╛ рдХреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдФрд░ рдпрд╣ рдПрдХ рдЧреИрд░-рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ), рддреЛ рдбреЙрдХрд░ рдЫрд╡рд┐ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдЙрдард╛рдПрдВред

рдЪреВрдВрдХрд┐ рдпрд╣ рдбреЙрдХрд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХрдВрдЯреЗрдирд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ https://hub.docker.com/r/hasnat/volumes-provisioner рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

version: '2'
services:
  volumes-provisioner:
    image: hasnat/volumes-provisioner
    environment:
      PROVISION_DIRECTORIES: "65534:65534:0755:/var/data/prometheus/data"
    volumes:
      - "/var/data:/var/data"

  prometheus:
    image: prom/prometheus:v2.3.2
    ports:
      - "9090:9090"
    depends_on:
      - volumes-provisioner
    volumes:
      - "/var/data/prometheus/data:/prometheus/data"

рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдбреЙрдХрд░ рдЗрд╕реЗ рдареАрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рджреЗрд╡ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рджрди рдореЗрдВ, рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ!

рдЖрдИрдПрдордПрдЪрдУ рдкреЙрдбрдореИрди рдПрдХ (рдЕрдирдкреЗрдХреНрд╖рд┐рдд) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ ( рдпрд╣рд╛рдВ рднреА рджреЗрдЦреЗрдВ) рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛ред рдХреЛрдИ рдХрдВрдкреЛрдЬрд╝ рд╕реЙрд▓реНрдпреВрд╢рди рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреЙрдбрдореИрди рдПрдкреАрдЖрдИ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдбреЙрдХрд░ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИред

[рдкреЙрдбрдореИрди] рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдбреЙрдХрд░ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИред

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдкреЙрдбрдореИрди рдореИрдХ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдкреЙрдбрдореИрди рдореИрдХ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ


рдЦреИрд░, рдЖрдИрдПрдордПрдЪрдУ рди рддреЛ рдбреЙрдХрд░ рдФрд░ рди рд╣реА рдкреЙрдбрдореИрди рдХрднреА рднреА рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдУрдПрд╕/рдПрдХреНрд╕ рдкрд░ рдбреЙрдХрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рдЫреБрдкрд╛ рд░рд╣реЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдЪрд┐рдд рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рд╡реАрдПрдо рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рджрд░реНрджрдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдпрд╣рд╛рдБ рд╡рд┐рд╖рдп рд╕реЗ рдереЛрдбрд╝рд╛ рд╣рдЯрдХрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдЕрдм рдУрдПрд╕/рдПрдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдПрдХ _experimental_ podman dmg рд╣реИ ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рди рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреЙрдбрдореИрди рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреЙрдбрдореИрди-рдХрдВрдкреЛрдЬрд╝ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИ рдЬрдм рдПрдХ рд╕рд╛рдЭрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ sudo рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрд▓рддреА рд╕реЗ рд░реВрдЯ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░ docker-compose рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╡реЗ рдЙрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рднреА рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рд╣рдо jpetazzo рдХреА рдкреЛрд╕реНрдЯ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╣рдо рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдбреЙрдХрд░ рд╕рдореВрд╣ рдХреЗ рддрд╣рдд рдХрдВрдЯреЗрдирд░ рдорд╢реАрди рдореЗрдВ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рд╕реЗ рдбреЙрдХрд░ рд╕реЙрдХреЗрдЯ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдбреЙрдХ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЪреВрдВрдХрд┐ рдореИрдВ рдмрд╛рдЗрдВрдб рдорд╛рдЙрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдФрд░ рдЕрдиреБрдорддрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ рдпрд╣рд╛рдБ рдбрд╛рд▓реЗрдВ:

рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ "рджреЗрд╢реА" рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЙрдирдХреА рдЫрд╡рд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд▓реНрдкрд╛рдЗрди рд╣реЛрдЧрд╛:

volumes:
  media:
services:
  mediainit:
    image: alpine
    entrypoint: /bin/sh -c "chown -v nobody:nogroup /mnt/media && chmod -v 777 /mnt/media"
    container_name: mediainit
    restart: "no"
    volumes: 
      - "media:/mnt/media"

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдЬрд┐рдиреНрд╣реЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВ, рд╡реЗ рдЗрд╕реЗ рджреЗрдЦ рдкрд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ chown user:user рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЖрдкрдХрд╛ рдХрд░реНрдиреЗрд▓ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреБрдЫ setacl fancness рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЪрд╛рдореЛрдж рд╕реЗ рдкрд╣рд▓реЗ рдЪреЙрдЙрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ 'рдЫрдбрд╝реА' рдирд╣реАрдВ рд╣реИред

рд╡реЙрд▓реНрдпреВрдо рд╕реНрд╡рд╛рдорд┐рддреНрд╡ docker-compose рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЪрд░реНрдЪрд╛ рдореЛрдмреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реЗрдкреЛ рдХреЗ рддрд╣рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рджреЗрдЦ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдиреЛрдЯреНрд╕:
рдбреЙрдХрд░ рд╡реЙрд▓реНрдпреВрдо, рдЬрдм рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд╛рдордЧреНрд░реА рдФрд░ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдЫрд╡рд┐ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

#Dockerfile
FROM alpine
RUN addgroup -S nicolas && adduser -S nicolas -G nicolas
RUN mkdir /foo && chown nicolas:nicolas /foo  
# empty, but owned by `nicolas`. Could also have some initial content
VOLUME /foo  
USER nicolas

рдРрд╕реА рдЫрд╡рд┐, рдЬрдм рдПрдХ рд╕реНрдкрд╖реНрдЯ рдорд╛рддреНрд░рд╛ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рддреА рд╣реИ (рдЬреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА) рдпрд╛ рдПрдХ рдирд╛рдорд┐рдд рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╕рд╛рде рдЬреЛ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ "рдкреНрд░рдЪрд╛рд░рд┐рдд" рдХрд░реЗрдЧрд╛:

тЮЬ  docker run --rm -it -v some_new_volume:/foo myimage
/ $ ls -al /foo
total 8
drwxr-xr-x    2 nicolas  nicolas       4096 Oct 18 08:30 .
drwxr-xr-x    1 root     root          4096 Oct 18 08:30 ..

рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рднреА рдпрд╣реА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ:

#docker-compose.yml
version: "3"
services:
  web:
    image: myimage
    command: ls -al /foo
    volumes:
      - db-data:/foo
volumes:
    db-data:

тЮЬ  docker-compose up
Creating volume "toto_db-data" with default driver
Creating toto_web_1 ... done
Attaching to toto_web_1
web_1  | total 8
web_1  | drwxr-xr-x    2 nicolas  nicolas       4096 Oct 18 08:30 .
web_1  | drwxr-xr-x    1 root     root          4096 Oct 18 08:37 ..
toto_web_1 exited with code 0

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рдЪреБрдХреЗ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рджреЛрдмрд╛рд░рд╛ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЛ рдмрджрд▓рдирд╛, рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛, рдпрд╛ рд╡реЙрд▓реНрдпреВрдо рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рд╕реБрдЭрд╛рдП рдЧрдП ^ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдЫ chown рдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ред

рдЙрдореНрдореАрдж рд╣реИ рдпреЗ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд░рдЪрдирд╛ рдХрд╛ рд╡реЙрд▓реНрдпреВрдо рдирд┐рд░реНрдорд╛рдг рдкрд░ рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдЙрдЬрд╛рдЧрд░ рдЗрдВрдЬрди рдПрдкреАрдЖрдИ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

AvdN picture AvdN  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dazorni picture dazorni  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

maltefiala picture maltefiala  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

komuw picture komuw  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

29e7e280-0d1c-4bba-98fe-f7cd3ca7500a picture 29e7e280-0d1c-4bba-98fe-f7cd3ca7500a  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ