Docker Handling
Dockerfile
Create Directory
- mkdir ~/docker/im-bind9
Dockerfile
~/docker/im-bind9# cat Dockerfile
#Grundimage hier ubuntu 16:04 FROM ubuntu:16.04 #maintainer sind wir MAINTAINER technik@xinux.de #Dies wird beim build und nur beim build ausgeführt RUN apt-get update && apt-get install -y bind9 #Frei zugebender Ports EXPOSE 53 EXPOSE 53/UDP #Verzeichnis welches wir zum mount vorbereiten VOLUME ["/var/cache/bind/"] VOLUME ["/etc/bind/"] #Abschliessendes Kommando beim container erstellen, muss im vordergrund laufen CMD ["/usr/sbin/named","-f", "-u", "bind" ]
Build
- cd ~/docker/im-bind9
- docker build -t im-bind9-01 .
Listing
- docker images
REPOSITORY TAG IMAGE ID CREATED SIZE im-bind9-01 latest 2b3cce7dde64 About an hour ago 243 MB
Container
Running
- docker run -d -p 53:53 -p 53:53/udp --name co-bind9-01 im-bind9-01
Inspect the Volumes
- docker inspect -f "Vorlage:Json .Mounts" co-bind9-01 | jq .
[
{
"Type": "volume",
"Name": "b0f0d3e275d537526c86f1a062f3955d6aa20392009df54af51598bee0032d5f",
"Source": "/var/lib/docker/volumes/b0f0d3e275d537526c86f1a062f3955d6aa20392009df54af51598bee0032d5f/_data",
"Destination": "/etc/bind",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "df518bd78593b927bf110a7fd12cb6734d0425366d281e2eb57cfbbf96b5901f",
"Source": "/var/lib/docker/volumes/df518bd78593b927bf110a7fd12cb6734d0425366d281e2eb57cfbbf96b5901f/_data",
"Destination": "/var/cache/bind",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
Config the service
- /etc/bind
- cd /var/lib/docker/volumes/b0f0d3e275d537526c86f1a062f3955d6aa20392009df54af51598bee0032d5f/_data
Create a Zone
cat named.conf.local
zone "vulkan.int" {
type master;
file "vulkan.int";
notify no;
};
Create a Zonefile
- /var/cache/bind
- cd /var/lib/docker/volumes/df518bd78593b927bf110a7fd12cb6734d0425366d281e2eb57cfbbf96b5901f/_data
- cat vulkan.int
$TTL 300 ; 5 minutes
@ IN SOA ns.vulkan.int. technik.xunix.de. (
2011090204 ; serial
14400 ; refresh (4 hours)
3600 ; retry (1 hour)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
NS ns.vulkan.int.
ns.vulkan.int. A 172.17.0.2
www.vulkan.int. CNAME waka.xinux.lan.
Check Container
- docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5fb1f648756f im-bind9-01 "/usr/sbin/named -..." 18 minutes ago Up 18 minutes 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp co-bind9-01
Restart Container
- docker restart co-bind9-01
Check Service
- host -t cname www.vulkan.int 127.0.0.1
Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: www.vulkan.int is an alias for waka.xinux.lan.
Integration to Systemd
Create a service
- cd /etc/systemd/system
- cat docker-container@.service
[Unit] Description=Docker Container %I Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a %i ExecStop=/usr/bin/docker stop -t 2 %i [Install] WantedBy=default.target
Reload systemd
- systemctl daemon-reload
Enable service
- systemctl enable docker-container@co-bind9-01.service
Stop service
- systemctl stop docker-container@co-bind9-01.service
Start service
- systemctl start docker-container@co-bind9-01.service
Restart service
- systemctl restart docker-container@co-bind9-01.service
Status service
- systemctl status docker-container@co-bind9-01.service
● docker-container@co-bind9-01.service - Docker Container co/bind9/01
Loaded: loaded (/etc/systemd/system/docker-container@.service; enabled; vendor preset: enabled)
Active: active (running) since Di 2017-05-09 19:12:43 CEST; 1min 20s ago
Main PID: 5267 (docker)
Tasks: 8 (limit: 512)
CGroup: /system.slice/system-docker\x2dcontainer.slice/docker-container@co-bind9-01.service
└─5267 /usr/bin/docker start -a co-bind9-01
Mai 09 19:12:43 bay systemd[1]: Started Docker Container co/bind9/01.