Difference between revisions of "Docker"

From HackerNet
Jump to: navigation, search
m (Central hantering)
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
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.
+
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.<br/>
 +
Mer info: http://www.nkode.io/2014/08/24/valuable-docker-links.html
  
 
==Installation==
 
==Installation==
Fedora 21
+
Fedora 23
  sudo yum -y install docker-io
+
  sudo dnf -y install docker-io
 
Ubuntu 14.04
 
Ubuntu 14.04
  sudo apt-get -y install docker.io
+
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===
 
===Starta===
  sudo docker -d &
+
  sudo docker daemon &
 +
Add user till grupp
 +
sudo usermod -aG docker $(whoami)
  
 
==Imagehantering==
 
==Imagehantering==
Line 20: Line 27:
 
För att spara det man har gjort i en image måste man commita
 
För att spara det man har gjort i en image måste man commita
 
  sudo docker commit [container ID] [image name]
 
  sudo docker commit [container ID] [image name]
 +
Remove image
 +
docker image ls
 +
docker rmi <IMAGE ID>
  
 
==Containerhantering==
 
==Containerhantering==
Line 28: Line 38:
 
  sudo docker run [container ID]
 
  sudo docker run [container ID]
 
  sudo docker stop [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 "{{ .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==
 
==registry.hub.docker.com==
Line 36: Line 71:
 
==Central hantering==
 
==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]]
 
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. <br/>
 +
'''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
 +
 +
[[Category:Guider]]

Latest revision as of 12:53, 1 December 2021

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

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