GithubHelp home page GithubHelp logo

docker-alpine-vnc's Introduction

Alpine Linux with VNC

A really simple Alpine Linux setup with VNC installed.

โ— Note: The image will be flattened to try and keep things as small as possible once Docker Hub builds support squashing (see Issue 955).

Docker Build Status Docker Pulls Docker Stars

This is [yet another] very basic container specification of Alpine Linux 3.5 with X11VNC (0.9.13-r0) installed.

Yes, I know there's a few of these out there already but I want one that is specifically under my own control in case the other ones happen to disappear or make changes that could potentially cause issues. I encourage you to do the same so that you have something you can keep up-to-date based on this and other images for testing and verification of all of your deployments.

A list of all versions and all what you can pull from the builds is available on the Docker Hub.

Why This Image?

On the surface, there's not much to this image and it's not incredibly useful. This is more of a start to getting things rolling for various UI concerns I have. I am using this as the basis for all of my other Docker work that involves things like setting up images that support Selenium tests, libraries that for some stupid reason require a display to do some work, etc.

Tagging and Branching Strategy

The strategy I am using for tagging and deployment is pretty simple. Basically the master branch will always be tagged as latest and development will always be tagged as development. That aside, all other versions/branches will be tagged using an appended string made up of:

  • version of Alpine
  • version of X11VNC

For example, Alpine 3.5 with X11VNC 0.9.13-r0 will be tagged as the following in Docker Hub and the Git branch associated with it will be named exactly the same:

alpine3.5-vnc0.9.13-r0

You should note that this is the default process from Docker Hub: the Docker tag matches the Git branch name. It's a great convenience to have this as we do not override or specialize the functionality since their "best practices defaults" matches our desired strategy.

Why did you pack the APKs into the repository?

There's some oddities I ran across where I could not reliably get the exact packages and versions I wanted installed. For this reason I downloaded and put them in the repository. Some of this can be seen through the policies associated with Alpine and via this commit within the Alpine repositories.

How to Build the Container Image

Building

The basic image build

Basic build command as you'd expect:

docker build -t "version42/alpine-vnc" .

Launching

So you want to actually launch the image? OK...

The basic launch is what you'd expect with one additional flag:

docker run --cap-add=SYS_ADMIN -p 5900:5900 version42/alpine-vnc

See that --cap-add? We need that for certain things you may install like Chromium. Without this you'll get namespace issues and other things that will pop-up unless you run those applications with specialized options (such as --no-sandbox for Chromium). Some applications, like Firefox, don't suffer from the same issues as others do and therefore it may not be necessary; however, I still recommend adding it as it will reduce some errors for basic container usage. Remove it if you are sure you don't need it, but I keep it around for this particular image as I use this mostly for testing.

Deployment

What, the Docker Hub automated process not good enough for you?

  1. Build (see above)

  2. Tag the image based on the strategy listed above (we'll use our 3.5/0.9.13-r0 example):

docker tag "version42/alpine-vnc" version42/alpine-vnc:alpine3.5-vnc0.9.13-r0
  1. Push the image to Docker Hub:
docker push version42/alpine-vnc:alpine3.5-vnc0.9.13-r0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.