История изменений
Исправление MirandaUser2, (текущая версия) :
Всмысле какая разница? В том и дело, что в докере не chroot а mount namespace, из-за которого чтоб добраться до файлов контейнера надо пачку костылей применить, и вообще сходу непонятно где что расположено.
mount_namespaces ? но это для изоляции списка примонтированных ФС. На доступ к файлам контейнера из хоста никак не влияет. Опция lxc.rootfs является аналогом опции path в freebsd jail
Да, это недостаток именно докера а не линукса.
возможно так. Как оно сделано в docker - не знаю.
Как это никакой? Ты уже какие-то виртуальные интерфейсы и мосты создаёшь. В фрибсд между контейнерами нет мостов, они в одной хостовой сети расположены, а разделение доступа делается на уровне IP-адресов, а не на уровне интерфейсов, что намного легче в целом.
можно указать lxc.network.type = none
none: will cause the container to share the host's network namespace. This means the host network devices are usable in the container.
Или lxc.network.type = phys и пробросить конкретный сетевой интерфейс хоста в контейнер. Просто с мостами на мой взгляд работать удобнее, если использовать контейнеры как легковесные VM, а не как средство изоляции процессов
jail / x 1.2.3.4 csh
Во-первых, как следует из man (https://man.freebsd.org/cgi/man.cgi?query=jail&sektion=8&manpath=FreeBSD+7.4-RELEASE) эта команда требует предварительной настройки хоста (иначе как он узнает, на какой сетевой интерфейс назначать ip alias).
ifconfig ed0 inet alias 192.0.2.100/32
mount -t procfs proc /data/jail/192.0.2.100/proc
jail /data/jail/192.0.2.100 testhostname 192.0.2.100 /bin/sh /etc/rc
И не забыть про:
Since jail is implemented using IP aliases, one of the first things to do is to disable IP services on the host system that listen on all local IP addresses for a service.
Во-вторых этот синтаксис устарел и современный (после freebsd 7.4) синтаксис очень похож на lxc-execute
jail path=/data/jail/192.0.2.100 host.hostname=testhostname ip4.addr=192.0.2.100 command=/bin/sh /etc/rc
Исходная версия MirandaUser2, :
Всмысле какая разница? В том и дело, что в докере не chroot а mount namespace, из-за которого чтоб добраться до файлов контейнера надо пачку костылей применить, и вообще сходу непонятно где что расположено.
mount_namespaces ? но это для изоляции списка примонтированных ФС. На доступ к файлам контейнера из хоста никак не влияет. Опция lxc.rootfs является аналогом опции path в freebsd jail
Да, это недостаток именно докера а не линукса.
возможно так. Как оно сделано в docker - не знаю.
Как это никакой? Ты уже какие-то виртуальные интерфейсы и мосты создаёшь. В фрибсд между контейнерами нет мостов, они в одной хостовой сети расположены, а разделение доступа делается на уровне IP-адресов, а не на уровне интерфейсов, что намного легче в целом.
можно указать lxc.network.type = none
none: will cause the container to share the host's network namespace. This means the host network devices are usable in the container.
Или lxc.network.type = phys и пробросить конкретный сетевой интерфейс хоста в контейнер. Просто с мостами на мой взгляд работать удобнее, если использовать контейнеры как легковесные VM, а не как средство изоляции процессов
jail / x 1.2.3.4 csh
Во-первых, как следует из man (https://man.freebsd.org/cgi/man.cgi?query=jail&sektion=8&manpath=FreeBSD+7.4-RELEASE) эта команда требует предварительной настройки хоста (иначе как он узнает, на какой сетевой интерфейс назначать ip alias).
ifconfig ed0 inet alias 192.0.2.100/32
mount -t procfs proc /data/jail/192.0.2.100/proc
jail /data/jail/192.0.2.100 testhostname 192.0.2.100 /bin/sh /etc/rc
И не забыть про:
Since jail is implemented using IP aliases, one of the first things to do is to disable IP services on the host system that listen on all local IP addresses for a service.
Во-вторых это синтаксис устарел и современный (после freebsd 7.4) синтаксис очень похож на lxc-execute
jail path=/data/jail/192.0.2.100 host.hostname=testhostname ip4.addr=192.0.2.100 command=/bin/sh /etc/rc