This commit refactors the OCI images support:
* added import_container_image and export_container_image methods
to oci_tools classes. 'umoci' and 'buildah' consume different
formats thus the inital skopeo call to import a container is tool
dependent.
* use oci-archive transport for packing the OCI images, this causes
docker and oci operations to just diverge on transport type.
* add_tag method no longer needed in oci_tools/base, skopeo is used
for that matter.
* container/docker.py class is no longer needed. The difference
between docker and OCI images is just on packing format which is just
a parameter in skopeo. It does not deserve a dedicated class
* system/root_import/docker.py class no longer needed. The difference
between OCI and Docker class was just the transport type for the
skopeo call. It does not deserve a dedicated class
This commit adds support for OCI images. Most of the docker related
code is reused for OCI classes and Docker classes have been refactored
so now they are a splecialization of the OCI classes. It is done this
way since KIWI internally only uses OCI format to operate with
containers, therefore docker images just differ from OCI images by
the way they are packaged or unpackaged.
Instead of creating a simple tarball the tools umoci and skopeo
from the docker tool chain are used to create official docker
images. Along with those tools more information to describe a
container has been added to the schema. A complete container
setup now consists of the following elements
<type image="docker">
<containerconfig name="..." maintainer="..." user="..." workingdir="...">
<entrypoint execute="command">
<argument name="option"/>
...
</entrypoint>
<subcommand execute="command">
<argument name="option"/>
...
</subcommand>
<expose>
<port number="..."/>
...
</expose>
<volumes>
<volume name="..."/>
...
</volumes>
<environment>
<env name="variable" value="value"/>
...
</environment>
<labels>
<label name="..." value="..."/>
...
</labels>
</containerconfig>
</type>
nose is no longer maintained, thus we have to move to another
testing system. This commit updates the tox setup and all tests
to use pytest instead of nose.