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:
- The Docker client contacted the Docker daemon.
- The Docker daemon pulled the "hello-world" image from the Docker Hub.
- The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
- 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