Docker
Docker är ett open source-projekt som automatiserar utrullning av applikationer i containers genom att lägga ett extra lager av abstraktion och automatisering av virtualisering på Linux. Docker använder resursisoleringsfunktioner i Linuxkärnan, såsom cgroups och kernel namespace för att tillåta oberoende "containers" att köra i en och samma Linuxinstans. Detta minskar overhead jämfört med virtuella maskiner.
Mer info: http://www.nkode.io/2014/08/24/valuable-docker-links.html
Contents
Installation
Fedora 23
sudo dnf -y install docker-io
Ubuntu 14.04
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 sudo sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list" sudo apt-get update && sudo apt-get -y install lxc-docker
Alternativt
wget -qO- https://get.docker.com/ | sh
Starta
sudo docker daemon &
Add user till grupp
sudo usermod -aG docker $(whoami)
Imagehantering
Snapshots av containers eller OS-images, t.ex. ubuntu
sudo docker search ubuntu sudo docker pull ubuntu
Visa tillgängliga images
sudo docker images
Starta en container utifrån en image.
docker run -i -t ubuntu /bin/bash
För att spara det man har gjort i en image måste man commita
sudo docker commit [container ID] [image name]
Remove image
docker image ls docker rmi <IMAGE ID>
Containerhantering
Kolla aktiva och inaktiva containers.
sudo docker ps sudo docker ps -l
Starta och stoppa en container.
sudo docker run [container ID] sudo docker stop [container ID]
Öppna ett bash skal i en container
sudo docker exec -it [container namn] bash
Starta och stoppa alla containers:
docker stop $(docker ps -aq) docker start $(docker ps -aq)
Ta bort alla containers:
docker rm $(docker ps -aq)
Ta bort alla images:
docker rmi $(docker images -q)
Inspect
Med docker inspect kan man få ut info om images och containers. T.ex. IP-adresser, hostname, kommentarer mm.
docker inspect myself/myimage docker inspect container-id docker inspect --format "Template:.NetworkSettings.IPAddress" $(docker ps -q)
Clean up
Städa bort alla stoppade containrar, oanvända networks, dangling images samt dangling build cache.
docker system prune
För att även ta bort alla unused images.
docker system prune -a
Dockerfile
nano Dockerfile sudo docker build -t my_test .
registry.hub.docker.com
Docker Hub är en central punkt för Docker, där hostas offentliga images.
Vill man ladda upp det man har gjort måste man först regga sig på hemsidan. Sedan kan man pusha imagear.
sudo docker push username/imagename
Central hantering
Central Dockerhantering gör det möjligt att managera images, containers, hostar och övriga Dockerresurser från ett och samma ställe. Exempel på detta är Shipyard, Swarm och Rancher
Network
Fr.o.m version 1.9 finns docker network. Nu använder man Docker Engine för att skapa virtuella nätverk som kan spänna över flera hostar. Overlay görs med VXLAN.
docker network --help docker network ls
Default finns det 3 nätverk.
Host mode: containern kopplas till samma L2-domän som hosten.
docker run -d --name webb1 --net=host
Bridge mode: (default) containern hamnar bakom hostens ip och man kan portforwarda.
docker run -d --name webb1 -p 8081:80
None mode: inget nätverk.
docker run -d --name webb1 --net=none
New bridge network
docker network create --driver=bridge --subnet=192.168.100.0/24 --gateway=192.168.100.1 --ip-range=192.168.100.128/25 testbridge
IP-adresser till containerar allokeras från rangen.
docker network connect testbridge webb1
Overlay
docker network create -d overlay --subnet=10.10.0.0/24 testoverlay