6

Creating a simple Docker container for Keystone trunk

 3 years ago
source link: https://notes.elmiko.dev/2014/06/06/Creating-a-simple-Docker-container-for-Keystone-trunk.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Creating a simple Docker container for Keystone trunk

06 Jun 2014

Big shoutout to Rob Rati, he had some excellent advice and a great blog post that gave me inspiration for this simple example.

Recently I have been doing some work with Swift and Keystone as they relate to the Sahara project. I had been creating virtual machines to host the Keystone and Swift servers because I wanted to gain greater control over running them from Devstack.

After a few rounds of messing with virtual machines through libvirt, I decided to give Docker a try to see if it made the process a tad more light weight. I think it mostly did, but I have not had to do any networking outside of my machine so that might add to my successes.

Here is a small breakdown of the procedure I used on my Fedora 20 machine to install Docker and work through the process of getting a container running with a trunk version of Keystone.

Install Docker

# yum install -y docker-io

Start Docker

# systemctl start docker

Get Fedora images

# docker pull fedora

Create a Dockerfile for Keystone

FROM fedora:20

RUN yum install -y \ git \ python-setuptools \ python-pip \ python-lxml \ python-greenlet-devel \ python-ldap \ sqlite-devel \ openldap-devel \ gcc \ python-devel WORKDIR /root RUN git clone https://github.com/openstack/keystone

WORKDIR /root/keystone RUN pip install -r requirements.txt RUN python setup.py install RUN mkdir -p /etc/keystone RUN cp etc/keystone.conf.sample /etc/keystone/keystone.conf RUN cp etc/keystone-paste.ini /etc/keystone/ RUN cp etc/policy.json /etc/keystone/

WORKDIR /

EXPOSE 5000 35357

CMD keystone-manage --config-file /etc/keystone/keystone.conf db_sync && \ keystone-all --config-file /etc/keystone/keystone.conf

Build an image from it

# docker build -t testing/keystone - < Dockerfile

Start a container with Keystone running

# docker run -d -p 5000:5000 -p 35357:35357 --name keystone1 testing/keystone

Test(using httpie instead of curl)

$ http localhost:5000
HTTP/1.1 300 Multiple Choices
Content-Length: 753
Content-Type: application/json
Date: Fri, 06 Jun 2014 19:35:05 GMT
Vary: X-Auth-Token

{
    "versions": {
        "values": [
            {
                "id": "v3.0", 
                "links": [
                    {
                        "href": "http://localhost:5000/v3/", 
                        "rel": "self"
                    }
                ], 
                "media-types": [
                    {
                        "base": "application/json", 
                        "type": "application/vnd.openstack.identity-v3+json"
                    }, 
                    {
                        "base": "application/xml", 
                        "type": "application/vnd.openstack.identity-v3+xml"
                    }
                ], 
                "status": "stable", 
                "updated": "2013-03-06T00:00:00Z"
            }, 
            {
                "id": "v2.0", 
                "links": [
                    {
                        "href": "http://localhost:5000/v2.0/", 
                        "rel": "self"
                    }, 
                    {
                        "href": "http://docs.openstack.org/", 
                        "rel": "describedby", 
                    "type": "text/html"
                }
                ], 
                "media-types": [
                    {
                        "base": "application/json", 
                        "type": "application/vnd.openstack.identity-v2.0+json"
                    }, 
                    {
                        "base": "application/xml", 
                        "type": "application/vnd.openstack.identity-v2.0+xml"
                    }
                ], 
                "status": "stable", 
                "updated": "2014-04-17T00:00:00Z"
            }
        ]
    }
}

And presto! a working Keystone instance in a container. At this point it is only configured as a basic server, to get further I will most likely need to attach to the container and setup some users.

All in all a fairly painless process, getting the Dockerfile correct took me the most time but it wasn’t difficult to debug given the way docker outputs to stdout.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK