Дополнение A. Различия платформ
Хотя Docker и стремится к полной независимости платформы, существует по крайней мере один стоящий замечания способ, которым отличаются его платформы. Давайте быстро взглянем на него и рассмотрим как с ним обходиться.
Когда дело доходит до владения файлами и полномочиями на них, существуют некие тонкие отличия в том как их обрабатывают платформы Docker (Mac, Linux и Windows). Эти отличия могут вызывать проблемы при записи файлов в некий монтируемый том изнутри контейнера.
Эта проблема проистекает из того факта, что обычно существуют различные учётный записи пользователя, которые
применяются внутри контейнера и за его пределами. Обычно в своей локальной машине вы применяете учётную запись
своего обычного пользователя, но внутри контейнера пользователем по умолчанию в данном контейнере является
учётная запись root
. Это означает, что создаваемые внутри данного контейнера
файлы имеют владельцем данного пользователя root
.
Когда вы покидаете данный контейнер, основной вопрос состоит в том, будете ли вы способны изменять те файлы, владельцем
которых является root
? Окончательный ответ слегка отличается для каждой из
платформ.
В Docker для Windows, те файлы, которые созданы внутри данного контейнера имеют права доступа к файлу, которые
позволяют им подлежать изменениям кем угодно (что эквивалентно правам доступа к файлу в Unix
777
). Это означает, что нет никаких проблем с использованием и изменением этих
файлов вне данного контейнера.
Docker для Mac применяет свою собственную обособленную систему совместного использования файлов с названием
osxfs
.
Она слегка обманывает с тем, чтобы выглядеть как будто все монтируемые файлы находятся во владении какого- то
пользователя в том контейнере, который осуществляет к ним доступ/ создал их. Тем не менее, в действительности, эти файлы в вашей локальной
файловой системе пребывают во владении какой- то учётной записи пользователя macOS, который и владеет ими. На практике
это означает, монтируемые файлы доступны и на чтение, и на запись как изнутри, так и извне данного контейнера без необходимости
изменения их владельца.
В Linux нет никакой магии или трюков чтобы обособлять вас от различий владения файлами внутри контейнера и за его пределами
в вашей локальной машине. Если файлы внутри контейнера принадлежат root
, то
вне данного контейнера их владельцем всё ещё является root
. Нам всегда приходится
что- то предпринимать чтобы обеспечить изменяемость сгенерированных внутри контейнера файлов за его пределами.
Мы можем предпринять один из двух подходов:
-
Воспользоваться возможностью
--user "$(id -u):$(id -g)"
, которая исполняет необходимую команду с идентификаторами вашего локального пользователя и его группы- например: $ docker-compose exec --user "$(id -u):$(id -g)" web \ bin/rails generate controller welcome index
-
Выполнить
chown
для этих файлов запустив следующее из корня своего Rails: $ sudo chown <your_user>:<your_group> -R .
Что касается лично меня, последнее мне кажется более честным и именно это я и предлагаю на протяжении всей книги. Для того чтобы сэкономить на наборе, вы даже можете создать некий псевдоним задачи Rake или команды оболочки.
-
Сетевые протоколы для профессионалов безопасности, Йорам Орзач, Дипаншу Ханна, Packt Publishing, октябрь 2022
-
JavaScript для хакеров. Научитесь думать как хакер, Гарет Хейс, Leanpub, декабрь 2022
-
Как заниматься взломом словно легенда. Прорываемся в Windows, Спарк Флоу, No Starch Press, октябрь 2022
-
Управление оперативной памятью в реляционных системах баз данных, Педро Мехия Альварес, Марсело Леон Айяла, Сусана Ортега Сиснерос, Springer, август 2022
-
Атакующий код запуска оболочки с нуля, Ришалин Пиллэй, Packt Publishing, май 2022
-
Linux подсистема Windows (WSL) для профессионалов, Хайден Барнс, Apress, июнь 2021
-
Внутреннее устройство CPython, Энтони Шоу, Real Python, январь 2021
-
Контейнеры Linux и Виртуализация: с точки зрения ядра, Шашанк Мохан Джейн, Apress, октябрь 2020
-
Изучаем подсистемы Windows для Linux, Прэйтик Сингх, Apress, сентябрь 2020
-
Всё что требуется для RabbitMQ, 2е изд., Ловайса Йохансон, Дэйвид Доссо, Packt Publishing, август 2020
-
Практика загрузки. Изучение процесса загрузки Linux, Windows и Unix, Йогеш Бабар, Apress, июль 2020
-
Распределённые системы для практиков, Даймос Раптис, Leanpub, май 2020
-
Практическая автоматизация предприятия в Linux, Джеймс Фриман, Packt Publishing, январь 2020, Действенное выполнение крупномасштабной автоматизации инфраструктуры Linux с применением Ansible.
-
Внутреннее устройство баз данных, Алекс Петров, O`Reilly Media, Inc., октябрь 2019
-
Книга рецептов параллельного программирования Python. 2е изд., Джанкарло Закконе, Packt Publishing, сентябрь 2019
-
Полное руководство Ansible. 3е изд., Джеймс Фриман и Джесс Китинг, Packt Publishing, март 2019
-
Книга рецептов NGINX Дерек ДеДжонге, O’Reilly Media, Inc, ноябрь 2018
-
Полное руководство Ceph, 2е изд. Ник Фиск, Packt Publishing, февраль 2019
-
Docker для разработчиков Rails Роб Айзенберг, The Pragmatic Programmers, LLC., февраль 2019, с дополнениями по настройкам Django и 100Gb IB
-
Глава 11. SQL Server и контейнеры (включая Kubernetes) Боб Вордс, "Профессиональный SQL Server поверх Linux", Apress, октябрь 2018
-
Полное руководство параллельного программирования на Python Куан Нгуен, Packt Publishing, ноябрь 2018
-
Asyncio в Python 3 Цалеб Хаттингх, O’Reilly Media, Inc, март 2018
-
RabbitMQ для профессионалов Гайвин Рой, Manning Publications, сентябрь 2017
-
Proxmox. Полное руководство. 3е изд Васим Ахмед, Packt Publishing, ноябрь 2017
-
Книга рецептов Ceph, 2е изд Викхайят Умрао,Мишель Хаккет,Каран Сингх, Packt Publishing, ноябрь 2017
-
Изучаем Ceph, 2е изд., Энтони Д`Атри, Вайбхав Бхембре, Каран Сингх, Packt Publishing, октябрь 2017
-
Книга рецептов виртуализации KVM Константин Иванов, Packt Publishing, июнь 2017
-
Полное руководство работы с сетями на Python. Эрик Чоу, Июнь 2017
-
Контейнеризация при помощи LXC Константин Иванов, Packt Publishing, март 2017
-
Proxmox. Полное руководство. 2е изд., Васим Ахмед, Packt Publishing, май 2016
-
Книга рецептов Ceph Каран Сингх, Packt Publishing, февраль 2016
-
Полная виртуализация. Базовая коммерческая редакция: Proxmox-freeNAS-Zentyal-pfSense. Ли Р. Сюрбер, февраль 2016
-
Zabbix. Полное руководство. 2е изд., Андреа Далле Ваккье, сентябрь 2015
-
Книга рецептов Proxmox. Главы 1-6, Дополнения: Преобразование OpenVZ в LXC, Организация ограждения Васим Ахмед, Packt Publishing, август 2015
-
Изучаем Ceph Каран Сингх, Packt Publishing, январь 2015
Дополнительные ссылки:
Перевод: Copyright © 2019 ![]() All rights reserved. Ссылки обязательны (Refs and links are obligatory). | http://www.mdl.ru портфолио SD DC |
HPE DL360 G10 since 4300$ |