docker support

This commit is contained in:
Olof Hagsand 2016-02-26 19:47:30 +01:00
parent 6366fc631e
commit eb93d82caa
18 changed files with 370 additions and 125 deletions

View file

@ -18,43 +18,53 @@
# <http://www.gnu.org/licenses/>.
#
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
prefix = @prefix@
bindir = @bindir@
sbindir = @sbindir@
libdir = @libdir@
includedir = @includedir@
datarootdir = @datarootdir@
CC = @CC@
CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
all:
@echo "Run make docker to build docker image"
clean:
SHELL = /bin/sh
distclean: clean
rm -f Makefile *~ .depend libcli* clicon_cli clicon_backend Dockerfile
SUBDIRS = cli backend
# Kind of reverse install, could have copied from src dir,...
.PHONY: docker
docker:
cp $(DESTDIR)$(libdir)/libcligen.so.@CLIGEN_VERSION@ .
cp $(DESTDIR)$(libdir)/libclicon.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(libdir)/libclicon_cli.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(libdir)/libclicon_backend.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(bindir)/clicon_cli .
cp $(DESTDIR)$(sbindir)/clicon_backend .
touch nullfile
.PHONY: all clean depend install $(SUBDIRS) docker push
install:
uninstall:
install-include:
all: $(SUBDIRS)
depend:
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
for i in $(SUBDIRS); \
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
#include .depend
$(SUBDIRS):
(cd $@; $(MAKE) $(MFLAGS) all)
install-include:
for i in $(SUBDIRS); \
do (cd $$i ; $(MAKE) $(MFLAGS) $@); done;
install:
for i in $(SUBDIRS); \
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
uninstall:
for i in $(SUBDIRS); \
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
clean:
for i in $(SUBDIRS); \
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
distclean: clean
rm -f Makefile *~ .depend
for i in $(SUBDIRS); \
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
docker:
for i in $(SUBDIRS); \
do (cd $$i && $(MAKE) $(MFLAGS) $@); done
push:
for i in $(SUBDIRS); \
do (cd $$i && $(MAKE) $(MFLAGS) $@); done

View file

@ -1,80 +1,6 @@
You can skip directly to (3)
1. Building it yourself
+++++++++++++++++++++++
Ensure that cligen and clicon has been built and installed.
make docker
2. Building a docker and publishing it
++++++++++++++++++++++++++++++++++++++
This example pushes it to my (Olof Hagsand)s docker hub repository
sudo docker build --no-cache=true -t olofhagsand/clicon_cli:v1.0 .
sudo docker push olofhagsand/clicon_yang
3. From docker
++++++++++++++
The easiest is just to run it from docker hub:
> sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
Either just try out the default yang specification or try out your own.
3.1 Enter your own spec
-----------------------
$ sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
input yang spec(end with ^d). Or just ^d for default spec>
container hello{
leaf world{
type string; }
}
^d
clicon_yang> hello world !
clicon_yang> show
hello {
world !;
}
clicon_yang>
3.2 Run the default
-------------------
> sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
input yang spec(end with ^d). Or just ^d for default spec> ^d
clicon_yang> a 43 b y 88
clicon_yang> a 43 c z 12
clicon_yang> show
a {
x 43;
b {
y 88;
}
c {
z 12;
}
}
3.3 Show options
----------------
There are several show commands where you can display your
specification as CLI, JSON or XML. You can also display the YANG specification.
clicon_yang> show cli
hello world !
clicon_yang> show json
{
"hello": {
"world": "!"
}
}
clicon_yang> show xml
<hello>
<world>!</world>
</hello>
clicon_yang> show yang
container hello {
leaf world {
type string;
}
}
This dir contains docker code - how to build clixon as docker containers
cli Build olofhagsand/clicon_cli container
backend Build olofhagsand/clicon_backend container
You may run the container directly by going directly to example and
the docker runtime scripts there

View file

@ -0,0 +1,20 @@
FROM ubuntu:14.04
# 12.04
MAINTAINER Olof Hagsand <olof@hagsand.se>
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y libqdbm-dev
COPY libcligen.so.@CLIGEN_VERSION@ /usr/lib/
COPY libclicon.so.@CLICON_VERSION_MAJOR@ /usr/lib/
COPY libclicon_backend.so.@CLICON_VERSION_MAJOR@ /usr/lib/
COPY clicon_backend /usr/sbin/
RUN ldconfig
RUN sudo groupadd clicon
CMD ["/usr/sbin/clicon_backend", "-D", "1", "-F", "-f", "/data/clicon.conf"]
EXPOSE 7878 7878/udp

View file

@ -0,0 +1,63 @@
#
# Copyright (C) 2009-2016 Olof Hagsand and Benny Holmgren
#
# This file is part of CLIXON.
#
# CLIXON is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# CLIXON is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with CLIXON; see the file LICENSE. If not, see
# <http://www.gnu.org/licenses/>.
#
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
prefix = @prefix@
bindir = @bindir@
sbindir = @sbindir@
libdir = @libdir@
includedir = @includedir@
datarootdir = @datarootdir@
image = olofhagsand/clicon_backend:v1.0
all:
@echo "Run make docker to build docker image"
clean:
distclean: clean
rm -f Makefile *~ .depend libcli* clicon_cli clicon_backend Dockerfile
# Kind of reverse install, could have copied from src dir,...
.PHONY: docker push
docker:
cp $(DESTDIR)$(libdir)/libcligen.so.@CLIGEN_VERSION@ .
cp $(DESTDIR)$(libdir)/libclicon.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(libdir)/libclicon_backend.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(sbindir)/clicon_backend .
sudo docker build -t $(image) .
push:
docker push $(image)
install:
uninstall:
install-include:
depend:
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
#include .depend

6
docker/backend/README Normal file
View file

@ -0,0 +1,6 @@
Ensure that cligen and clicon has been built and installed.
sudo make docker
make push
Then go to example and run the example as a docker container

View file

@ -2,18 +2,14 @@ FROM ubuntu:14.04
# 12.04
MAINTAINER Olof Hagsand <olof@hagsand.se>
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
libqdbm-dev \
curl
RUN apt-get update && apt-get install -y libqdbm-dev
COPY libcligen.so.@CLIGEN_VERSION@ /usr/lib/
COPY libclicon.so.@CLICON_VERSION_MAJOR@ /usr/lib/
COPY libclicon_cli.so.@CLIGEN_VERSION@ /usr/lib/
COPY clicon_cli /usr/bin/
COPY nullfile /usr/local/var/clicon_yang/
COPY start.sh /usr/bin/
RUN ldconfig
#CMD ["clicon_cli", "-c", "-f", "/usr/local/etc/clicon_yang.conf"]
CMD ["start.sh"]
CMD ["/usr/bin/clicon_cli", "-f", "/data/clicon.conf"]
EXPOSE 7878 7878/udp

63
docker/cli/Makefile.in Normal file
View file

@ -0,0 +1,63 @@
#
# Copyright (C) 2009-2016 Olof Hagsand and Benny Holmgren
#
# This file is part of CLIXON.
#
# CLIXON is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# CLIXON is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with CLIXON; see the file LICENSE. If not, see
# <http://www.gnu.org/licenses/>.
#
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
prefix = @prefix@
bindir = @bindir@
sbindir = @sbindir@
libdir = @libdir@
includedir = @includedir@
datarootdir = @datarootdir@
# This is my dockerhub account
image = olofhagsand/clicon_cli:v1.0
all:
@echo "Run make docker to build docker image"
clean:
distclean: clean
rm -f Makefile *~ .depend libcli* clicon_cli clicon_backend Dockerfile
# Kind of reverse install, could have copied from src dir,...
.PHONY: docker push
docker:
cp $(DESTDIR)$(libdir)/libcligen.so.@CLIGEN_VERSION@ .
cp $(DESTDIR)$(libdir)/libclicon.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(libdir)/libclicon_cli.so.@CLICON_VERSION_MAJOR@ .
cp $(DESTDIR)$(bindir)/clicon_cli .
sudo docker build -t $(image) .
push:
sudo docker push $(image)
install:
uninstall:
install-include:
depend:
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
#include .depend

6
docker/cli/README Normal file
View file

@ -0,0 +1,6 @@
Ensure that cligen and clicon has been built and installed.
sudo make docker
make push
Then go to example and run the example as a docker container