Проект

Общее

Профиль

Docker Freebsd

В FreeBSD двоичный файл docker является только клиентом, и вы не можете использовать его для запуска демона докеров, потому что демон Docker использует специфические для Linux функции ядра, поэтому вы не можете запустить Docker изначально в FreeBSD. Таким образом, вы должны установите docker-machine, чтобы создать виртуальную машину и подключиться к ней.

Установка

pkg install virtualbox-ose

Или

cd /usr/ports/emulators/virtualbox-ose
make install clean

Добавляем в /boot/loader.conf

vboxdrv_load="YES"

Что бы не ребутаться загружаем в ручную

kldload vboxdrv

Далее в /etc/devfs.rules добавляем правило

[system=10]
add path 'vboxnetctl' mode 0660 group vboxusers

Автозагрузка сервисов /etc/rc.conf:

devfs_system_ruleset="system"
vboxnet_enable="YES"

Запускаем

service devfs restat
service vboxnet start

Приступаем к установке докеров

pkg install docker docker-machine docker-compose

создаем коталог

mkdir ~/.docker

Затем вам нужно создать машину default (если у вас ее нет):

docker-machine create --driver virtualbox default

Или проверьте, существует ли уже:

docker-machine ls

Настройка среды для клиента Docker:

eval"$(docker-machine env default)"

Можно создать машину с зарание выделенными ресурсами

docker-machine create --driver virtualbox \
    --virtualbox-memory 2048 \
    --virtualbox-cpu-count 2 \
    --virtualbox-disk-size 102400 \
    --virtualbox-hostonly-cidr "10.2.1.1/24" \
    docker1
docker-machine ls

NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
docker1 - virtualbox Running tcp://10.2.1.100:2376 v17.06.0-ce
Подключаемся к машине

eval `docker-machine env docker1`
docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b04784fba78d: Pull complete
Digest: sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:

  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
  3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
Смотрите: Начните работу с Docker Machine и локальной виртуальной машиной

P.S. Для работы с докеами команды

Войти в boot2docker

docker-machine ssh

Посмотреть запущеные главные хосты

docker-machine ls

Выключить хост

VBoxManage controlvm "default" poweroff

Пробросить порт в хост

VBoxManage modifyvm "default" --natpf1 "collabora,tcp,,9980,,9980"

Удалить правило

VBoxManage modifyvm "default" --natpf1 delete collabora

Запустить хост

VBoxManage startvm --type headless default

Посмотреть правила проброса

VBoxManage showvminfo "default" | grep NIC

Для управления докерами необходимо задать окружение

eval $(docker-machine env default)

Скачать докер

docker pull collabora/code

Запустить докер

docker run -t -d -p 0.0.0.0:9980:9980 -e 'domain=cloud\\.nextcloud\\.com' --restart always --cap-add MKNOD collabora/code

Посмотреть запущенные докеры

docker ps

Войти в докер где e19602002537 - это CONTAINER ID

docker exec -it e19602002537 bash