May 3, 2015

Τρέχοντας Oracle Enterprise Linux στο Docker

Είχαμε αναφερθεί πριν λίγο διάστημα στο ότι Maven και Docker είναι δυο τεχνολογίες που αναμένουμε πολλές περισσότερες καινοτομίες από την Oracle στο άμεσο μέλλον. Το Docker είναι κάτι που μιλάει όλος ο κόσμος είτε πρόκειται για:

- continuous delivery infrastructure
- multi-tenant environments
- server consolidation
- ή πολλά άλλα...

Ας εστιάσουμε σε αυτό το άρθρο στο Docker και σε μερικές συμβουλές για την εγκατάσταση των Oracle προϊόντων. Ειδικά αν χρησιμοποιούμε Ubuntu, τότε η τελευταία έκδοση του Docker είναι διαθέσιμη από ένα ειδικό PPA (διαθέσιμο και στην έκδοση LTS 14.04) με εντολές που περιγράφονται εδώ.


Από τον Νοέμβριο του 2014 είναι διαθέσιμο το Oracle Enterprise Linux (OEL) 6 και 7 ως container από το Docker Hub Registry. Επίσης στο GitHub μπορούμε να βρούμε Dockerfiles για την εγκατάσταση του Weblogic, βασισμένα στο OEL image.
Ξεκινάμε λοιπόν. Ας τα κάνουμε όλα διαμέσου ενός Dockerfile ώστε να φτιάξουμε ένα image, βασισμένο στο OEL 6.6 που εγκαθιστά τις βασικά prerequisite πακέτα για την Oracle καθώς και τα αποθετήρια (repositories) του OEL. Το Dockerfile μπορεί να μοιάζει σαν το εξής:

 FROM oraclelinux:6.6  
 MAINTAINER Serafeim Karapatis <serafeim.karapatis@gmail.com>  
 RUN yum -y install wget  
 RUN wget --no-check-certificate https://public-yum.oracle.com/public-yum-ol6.repo -O /etc/yum.repos.d/pu  
 blic-yum-ol6.repo  
 RUN wget --no-check-certificate https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg  
 /RPM-GPG-KEY-oracle  
 RUN yum install -y oracle-rdbms-server-12cR1-preinstall --skip-broken  
 RUN yum install -y unzip --skip-broken  

Ας τρέξουμε τώρα το Dockerfile δημιουργώντας το δικό μας image (ας το ονομάσουμε myoel6) Αυτό θα τρέξει τις παραπάνω εντολές.

sudo docker build -f Dockerfile -t myoel6 .

Μερικές συμβουλές για τον νέο μας container ώστε να κάνουμε επιτυχημένη εγκατάσταση των Oracle προϊόντων:


  1. Για τον Oracle Database Server χρειάζεται να κάνουμε mount το /dev/shm filesystem, που το Docker το αρχικοποιεί στα 64MB. Αυτό μπορεί να γίνει με την εκκίνηση του container ως εξής:
sudo docker run -v /dev/shm:/dev/shm myoel6

ώστε να περάσουμε στον container, το mounted /dev/shm σύστημα του host. 

  1. Συνήθως, τα προϊόντα της Oracle διαθέτουν γραφικούς installers (GUI installers) Εδώ έχουμε τις εξής επιλογές:
    1. είτε να εκκινήσουμε το sshd στον container (# service sshd start) και να κάνουμε ssh με το export του DISPLAY
    2. είτε να περάσουμε σαν παράμετρο τις λεπτομέρειες του γραφικού περιβάλλοντος που είναι σε ισχύ (πχ sudo docker run -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/home/oracle/.Xauthority myoel6)
    3. να χρησιμοποιήσουμε τους silent installers (ενδεχομένως σε συνδιασμό με provisioning εργαλεία όπως το εξαιρετικό Ansible)
  1. Αν δεν μπορούμε ή δεν θέλουμε να παρακάμψουμε τους τυπικούς συστεμικούς ελέγχους της Oracle κατά την εγκατάσταση που έχουν να κάνουν με την παραμετροποίηση των kernel flags (shm, κλπ) τότε στην εκκίνηση του container πρέπει να περάσουμε την παράμετρο: --privileged=true

No comments: