Hi Akila,

If we use a base image, true that we can avoid the time taken to run
apt-get update and software installation. But still the users will have to
run the provisioning again and again when doing development/testing. The
model I suggest is a way to eliminate apt-get update and also the
provisioning over and over again.

To summarize:

   - Publish a wso2 product specific docker image to a local docker
   repository (we can even push to dockerhub, without the JDK distribution and
   ask the users to provide the JDK when spinning up a container from the
   image).
   - Guide the users/developers to create their own Dockerfile extending
   from the original wso2 product Docker image.
   - Use the extension provided to copy artifacts/configurations to the
   container [1]. At development time, ideally the developer would only need
   to modify the configurations/copy artifacts to the carbon server.
   - After the development phase, collect all the changes and apply them to
   the provisioning method (puppet, etc.) that is used, and build the final
   production ready Docker image.

I'm +1 to push a Docker image with a configured product to Dockerhub,
excluding the JDK and ask the user to provide a JDK at runtime/creating a
new Dockerfile extending from the original product Dockerfile.

[1].
https://docs.wso2.com/display/DF110/Running+WSO2+Docker+Images#RunningWSO2DockerImages-Copyingartifactsfromhostmachinetothecontainer

On Mon, Jun 20, 2016 at 12:37 PM, Akila Ravihansa Perera <raviha...@wso2.com
> wrote:

> Hi Isuru,
>
> Do you have any specific concerns about using a wso2base image? On average
> there is a spike of 100MB when using a wso2base image, but that's a small
> price to pay when considering benefits users would gain out of this. Note
> that users can use "default" provisioning method to package any
> jars/configs to the image. The main problem here is the time taken to run
> apt-get update and package installation. Especially having to download
> files over I'net every time a Docker image is built which I think is
> unnecessary. wdyt?
>
> Thanks.
>
> On Wed, Jun 1, 2016 at 10:31 PM, Isuru Haththotuwa <isu...@wso2.com>
> wrote:
>
>> Hi Akila and Imesh,
>>
>> Without creating a base image, if we package everything in a product
>> specific image, host it in a local registry, and provide instructions to
>> create a local Dockerfile extending from that image, the time taken to
>> build the local image would be lesser. This will speedup the
>> development/testing procedure even more. The developers can package any
>> apps/jars/configs via the local Dockerfile (using volume mounts, etc.), for
>> testing. I have seen this pattern used in some Docker images, for an
>> example in the haproxy Docker image [1].
>>
>> One downside is, as you mentioned, we cannot push the image to Dockerhub
>> with Oracle JDK distribution included. Maybe we can create the product
>> Docker image with the relevant utilities (wget, zip, unzip, etc.) + the
>> product distribution, and push it to Docker hub. Then provide an option to
>> package the JDK via a local Dockerfile extending from the product
>> Dockerfile.
>>
>> WDYT?
>>
>> [1]. https://hub.docker.com/_/haproxy/
>>
>> On Mon, May 30, 2016 at 12:48 PM, Akila Ravihansa Perera <
>> raviha...@wso2.com> wrote:
>>
>>> Hi,
>>>
>>> Currently we don't have a base image for WSO2 Docker images due to image
>>> size issues we had with it. But later we found out that this was mainly due
>>> to multiple RUN commands, which caused Docker to add unnecessary layers.
>>>
>>> I think we should bring back the base image for couple of reasons;
>>>
>>> 1. wso2base image with minimum packages installed (wget, puppet etc)
>>> will eliminate the need for having to run apt-get commands (which are very
>>> expensive, time-wise) each and every time
>>>
>>> 2. wso2base image can be hosted publicly (without Oracle JDK of course)
>>> so that users don't have to build wso2base but rather pull it from
>>> DockerHub.
>>>
>>> 3. wso2base image provides a Docker layer which reduces the amount of
>>> traffic carried when pulling images from a Docker registry over a long
>>> period of time. This is because base image is very unlikely to be changed,
>>> but product images can change very rapidly (due to artifacts or
>>> configuration change, product version etc.). It is unnecessary to carry the
>>> information in the lower level layers each time a product image is changed.
>>>
>>> If you must use a single image, I found this cool Docker tool written in
>>> Python which can be used to squash Docker layers called docker-squash [1].
>>> Following is a comparison of Docker images built with/without wso2base and
>>> squashed images;
>>>
>>> [image: Inline image 3]
>>>
>>> In summary;
>>> wso2am-1.10.0 with base image: 1.079GB
>>> wso2am-1.10.0 with base image and *squashed*: 948MB
>>> wso2am-1.10.0 *without* base image: 969MB
>>>
>>> wso2esb-4.9.0 with base image: 794MB
>>> wso2esb-4.9.0 with base image and *squashed*: 664MB
>>> wso2esb-4.9.0 *without* base image: 685MB
>>>
>>> In conclusion, introducing a base image with minimum packages has a
>>> image size overhead of around 100+MB, but having individual images without
>>> a hierarchy can cause a significant amount of unnecessary information being
>>> transferred over the network when pull/push'ing to/from a registry.
>>>
>>> I've created a PR for this feature at [2]. Also used
>>> "--no-install-recommends" option to apt-get when installing packages to
>>> prevent unnecessary packages being installed. Please share your thoughts.
>>>
>>> [1] https://github.com/goldmann/docker-squash
>>> [2] https://github.com/wso2/dockerfiles/pull/46/files
>>>
>>> Thanks.
>>> --
>>> Akila Ravihansa Perera
>>> WSO2 Inc.;  http://wso2.com/
>>>
>>> Blog: http://ravihansa3000.blogspot.com
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> Dev@wso2.org
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>> Thanks and Regards,
>>
>> Isuru H.
>> +94 716 358 048* <http://wso2.com/>*
>>
>>
>>
>
>
> --
> Akila Ravihansa Perera
> WSO2 Inc.;  http://wso2.com/
>
> Blog: http://ravihansa3000.blogspot.com
>



-- 
Thanks and Regards,

Isuru H.
+94 716 358 048* <http://wso2.com/>*
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to