В FreeBSD двоичный файл docker является только клиентом, и вы не можете использовать его для запуска демона докеров, потому что демон Docker использует специфические для Linux функции ядра, поэтому вы не можете запустить Docker изначально в FreeBSD. Таким образом, вы должны установите docker-machine , чтобы создать виртуальную машину и подключиться к ней.
Установка
# pkg install virtualbox-ose
Или
# cd /usr/ports/emulators/virtualbox-ose
# make install clean
# rehash
Добавляем в /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:
[code]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
|