Docker

From UVOO Tech Wiki
Revision as of 17:18, 2 February 2021 by Busk (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Docker on Windows

Get started

https://docs.docker.com/install/linux/docker-ce/ubuntu/

sudo docker run -dit --network ipvlan1003 --name debian1 debian:buster
sudo docker attach debian1

expose port on specific ip address (like in a vlan)

sudo docker run -dit -p 192.168.19.2:8000:22 --name debian2 debian:buster

Binding to specific interface on host

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/binding/

If you want to be more restrictive and only allow container services to be contacted through a specific external interface on the host machine, you have two choices. When you invoke docker run you can use either -p IP:host_port:container_port or -p IP::port to specify the external interface for one particular binding. Or if you always want Docker port forwards to bind to one specific IP address, you can edit your system-wide Docker server settings and add the option --ip=IP_ADDRESS. Remember to restart your Docker server after editing this setting.

experimental

nano /etc/docker/daemon.json

{ 
    "experimental": true 
}

ZFS Issues

I was using a zfs dataset on pool tank - tank/docker

I had issues on Ubuntu 18.04 not importing zfs pool on reboot and instead of using /etc/docker/daemon.json like official docs say, I used /etc/default/docker

I edited
/etc/default/docker
and added line
DOCKER_OPTS="--storage-driver=zfs"

Booted up fine instead of messing with zfs pool import causing it to fail, probably because /var/lib/docker already was up with something. Maybe this happens on more than just Ubuntu 18.04 LTS. Might be a systemd issue or a systemd on ubuntu 18.04 issue.

command examples after you add DOCKER_OPTS="--storage-driver=zfs" to /etc/default/docker

systemctl stop docker
cp -rp /var/lib/docker /var/lib/docker.bkp
rm -rf /var/lib/docker
zfs create -o mountpoint=/var/lib/docker tank/docker
systemctl start docker

Cleanup

sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)
docker update --restart always <container_name>

ZFS

Create ZFS pool
sudo zpool create -f zroot /dev/sdaX

Create ZFS dataset
sudo zfs create -o mountpoint=/var/lib/docker zroot/docker

Edit /etc/defaults/docker
DOCKER_OPTS="-s zfs --storage-opt zfs.fsname=zroot/docker ..."

Mount ZFS partition on boot
https://github.com/zfsonlinux/pkg-zfs/wiki/Ubuntu-ZFS-mountall-FAQ-and-troubleshooting

Or you could /etc/docker/daemon.json

{
  "storage-driver": "zfs"
}