Malmö Docker Meetup #2 Översikt Dockerfiledras oftast som parallell till bashscript. Skrivs oftast som en serie av kommando. Ger som ett resultat långsamt och ineffektivt skript. Parallell En serie av Som ett 1
Kommando Implementera DNS Ordning spelar roll av Dockerfile, ser till att hämtning från mellanlagringen sker oftare. Kommando som tar lång tid, skall finnas längst uppe i Dockerfile. Liksom sådant som kan delas av flera images. Miljövariabel eller specifika kommando skall finnas längst nere. Tar lång tid Som kan delas Längst nere Välj bas omsorgsfullt Finns många att välja mellan. Lönt att välja noggrant. Utgå från en bas. Många att välja Noggrant En bas 2
Dra nytta av skikt Varje kommando i Dockerfile, ger som ett resultat ett skikt. Genom att sammanföraflera RUN-kommando, skapas färre skikt. Använd ett EXPOSEkommando, för att exponera alla portar. Tänk efter före, vilka skikt som kan delas, för att optimera dina images. Ett skikt Sammanföra Använd ett Tänk efter före Exempel Dockerfile som bashscript FROM ubuntu:trusty MAINTAINER Mats Johannesson "mats.johannesson@linuxkurser.nu" RUN apt-get -yq update # Apache apache2 \ apache2-utils \ libapache2-mod-python \ python-dev \ python-pip \ python-cairo \ python-pysqlite2 \ python-mysqldb \ python-jinja2 sqlite3 \ curl \ wget \ git \ software-properties-common curl -ssl https://bootstrap.pypa.io/get-pip.py python && \ pip install whisper \ carbon \ graphite-web \ 'Twisted<12.0' \ 'django<1.6' \ django-tagging # Lägga till uppstartsscripts etc ADD. /app RUN mkdir -p /app/wsgi RUN useradd -d /app -c 'application' -s '/bin/false' graphite RUN chmod +x /app/bin/* RUN chown -R graphite:graphite /app RUN chown -R graphite:graphite /opt/graphite RUN rm -f /etc/apache2/sites-enabled/* ADD./apache-graphite.conf /etc/apache2/sitesenabled/apache-graphite.conf # Exponera portar. EXPOSE 80 EXPOSE 2003 EXPOSE 2004 EXPOSE 7002 ENV APACHE_CONFDIR /etc/apache2 ENV APACHE_ENVVARS $APACHE_CONFDIR/envvars ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_RUN_DIR /var/run/apache2 ENV APACHE_PID_FILE $APACHE_RUN_DIR/apache2.pid ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_LOG_DIR /var/log/apache2 WORKDIR /app # Definiera standardkommando. CMD ["/app/bin/start_graphite"] Implementera DNS 3
Exempel Dockerfile optimerad # 1 Gemensam header/ paket FROM ubuntu:trusty MAINTAINER Mats Johannesson mats.johannesson@linuxkurser.nu" RUN apt-get -yq update \ && wget \ curl \ git \ software-properties-common # 2 - Python python-dev \ python-pip \ python-pysqlite2 \ python-mysqldb # 3 - Apache apache2 \ apache2-utils # 4 - Apache ENVs ENV APACHE_CONFDIR /etc/apache2 ENV APACHE_ENVVARS $APACHE_CONFDIR/envvars ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_RUN_DIR /var/run/apache2 ENV APACHE_PID_FILE $APACHE_RUN_DIR/apache2.pid ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_LOG_DIR /var/log/apache2 # 5 - Graphite och beroende libapache2-mod-python \ python-cairo \ python-jinja2 \ sqlite3 pip install whisper \ carbon \ graphite-web \ 'Twisted<12.0' \ 'django<1.6' \ django-tagging # 6 - Annat EXPOSE 80 2003 2004 7002 WORKDIR /app VOLUME /opt/graphite/data # Definiera standardkommando. CMD ["/app/bin/start_graphite"] # 7 Första användningen av ADD ADD. /app # 8 Sista installationen RUN mkdir -p /app/wsgi \ && useradd -d /app -c 'application' -s '/bin/false' graphite \ && chmod +x /app/bin/* \ && chown -R graphite:graphite /app \ && chown -R graphite:graphite /opt/graphite \ && rm -f /etc/apache2/sites-enabled/* \ && mv /app/apache-graphite.conf /etc/apache2/sitesenabled/apache-graphite.conf Använd mallfil Utnyttja mallfil för Dockerfile. Samma uppbyggnad för alla Dockerfile. Dra nytta av skikt på ett smartare sätt. Mallfil Samma uppbyggnad Dra nytta av Råd Skapa ny underkatalog för ditt projekt. Specificera undantagi filen.dockerignore. Undvik installation av onödiga paket. Kör bara en process per container. Minimera antalet skikt. Instruktioner delas upp på flera rader. Ny underkatalog Undantag Undvik En process Minimera Delas upp 4
Råd (forts.) Rensa onödiga filer. Rensa upp efter Package Manager. Hänvisa till specifik version. Rensa Rensa upp Specifik version Build, ShipandRun AnyApp, Anywhere 14 5