2016-04-14 14:20:23 +02:00
<!DOCTYPE html>
< html >
< head >
< meta charset = "utf-8" >
< meta name = "generator" content = "pandoc" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, user-scalable=yes" >
< title > Shaarli – Docker< / title >
< style type = "text/css" > code { white-space : pre ; } < / style >
< style type = "text/css" >
div.sourceCode { overflow-x: auto; }
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
code > span.dt { color: #902000; } /* DataType */
code > span.dv { color: #40a070; } /* DecVal */
code > span.bn { color: #40a070; } /* BaseN */
code > span.fl { color: #40a070; } /* Float */
code > span.ch { color: #4070a0; } /* Char */
code > span.st { color: #4070a0; } /* String */
code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
code > span.ot { color: #007020; } /* Other */
code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
code > span.fu { color: #06287e; } /* Function */
code > span.er { color: #ff0000; font-weight: bold; } /* Error */
code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
code > span.cn { color: #880000; } /* Constant */
code > span.sc { color: #4070a0; } /* SpecialChar */
code > span.vs { color: #4070a0; } /* VerbatimString */
code > span.ss { color: #bb6688; } /* SpecialString */
code > span.im { } /* Import */
code > span.va { color: #19177c; } /* Variable */
code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code > span.op { color: #666666; } /* Operator */
code > span.bu { } /* BuiltIn */
code > span.ex { } /* Extension */
code > span.pp { color: #bc7a00; } /* Preprocessor */
code > span.at { color: #7d9029; } /* Attribute */
code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
< / style >
< link rel = "stylesheet" href = "github-markdown.css" >
<!-- [if lt IE 9]>
< script src = "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js" > < / script >
<![endif]-->
< / head >
< body >
< div id = "local-sidebar" >
< ul >
< li > < a href = "Home.html" > Home< / a > < / li >
2016-10-12 12:36:59 +02:00
< li > Setup
2016-04-14 14:20:23 +02:00
< ul >
2016-10-12 12:36:59 +02:00
< li > < a href = "Download-and-Installation.html" > Download and Installation< / a > < / li >
< li > < a href = "Upgrade-and-migration.html" > Upgrade and migration< / a > < / li >
2016-04-14 14:20:23 +02:00
< li > < a href = "Server-requirements.html" > Server requirements< / a > < / li >
< li > < a href = "Server-configuration.html" > Server configuration< / a > < / li >
< li > < a href = "Server-security.html" > Server security< / a > < / li >
< li > < a href = "Shaarli-configuration.html" > Shaarli configuration< / a > < / li >
2016-05-14 11:37:28 +02:00
< li > < a href = "Plugins.html" > Plugins< / a > < / li >
2016-04-14 14:20:23 +02:00
< / ul > < / li >
< li > < a href = "Docker.html" > Docker< / a > < / li >
< li > < a href = "Usage.html" > Usage< / a >
< ul >
< li > < a href = "Sharing-button.html" > Sharing button< / a > (bookmarklet)< / li >
< li > < a href = "Browsing-and-Searching.html" > Browsing and Searching< / a > < / li >
< li > < a href = "Firefox-share.html" > Firefox share< / a > < / li >
< li > < a href = "RSS-feeds.html" > RSS feeds< / a > < / li >
< / ul > < / li >
< li > How To
< ul >
< li > < a href = "Backup,-restore,-import-and-export.html" > Backup, restore, import and export< / a > < / li >
< li > < a href = "Copy-an-existing-installation-over-SSH-and-serve-it-locally.html" > Copy an existing installation over SSH and serve it locally< / a > < / li >
< li > < a href = "Create-and-serve-multiple-Shaarlis-(farm).html" > Create and serve multiple Shaarlis (farm)< / a > < / li >
< li > < a href = "Download-CSS-styles-from-an-OPML-list.html" > Download CSS styles from an OPML list< / a > < / li >
< li > < a href = "Datastore-hacks.html" > Datastore hacks< / a > < / li >
< / ul > < / li >
< li > < a href = "Troubleshooting.html" > Troubleshooting< / a > < / li >
< li > < a href = "Development.html" > Development< / a >
< ul >
< li > < a href = "GnuPG-signature.html" > GnuPG signature< / a > < / li >
< li > < a href = "Coding-guidelines.html" > Coding guidelines< / a > < / li >
< li > < a href = "Directory-structure.html" > Directory structure< / a > < / li >
< li > < a href = "3rd-party-libraries.html" > 3rd party libraries< / a > < / li >
< li > < a href = "Plugin-System.html" > Plugin System< / a > < / li >
< li > < a href = "Release-Shaarli.html" > Release Shaarli< / a > < / li >
< li > < a href = "Security.html" > Security< / a > < / li >
< li > < a href = "Static-analysis.html" > Static analysis< / a > < / li >
< li > < a href = "Theming.html" > Theming< / a > < / li >
< li > < a href = "Unit-tests.html" > Unit tests< / a > < / li >
< / ul > < / li >
< li > About
< ul >
< li > < a href = "FAQ.html" > FAQ< / a > < / li >
< li > < a href = "Community-&-Related-software.html" > Community & Related software< / a > < / li >
< / ul > < / li >
< / ul >
< / div >
< h1 id = "docker" > Docker< / h1 >
< ul >
< li > < a href = "#docker-usage" > Docker usage< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "#get-and-run-a-shaarli-image" > Get and run a Shaarli image< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "#resources" > Resources< / a > < a href = ".html" > < / a > < / li >
< / ul >
< h2 id = "docker-usage" > Docker usage< / h2 >
< h3 id = "basics" > Basics< / h3 >
< p > Install < a href = "https://www.docker.com/" > Docker< / a > , by following the instructions relevant< a href = ".html" > < / a > < br / >
to your OS / distribution, and start the service.< / p >
< h4 id = "search-an-image-on-dockerhub" > Search an image on < a href = "https://hub.docker.com/" > DockerHub< / a > < a href = ".html" > < / a > < / h4 >
2016-10-12 12:36:59 +02:00
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "ex" > docker< / span > search debian
2016-04-14 14:20:23 +02:00
2016-10-12 12:36:59 +02:00
< span class = "ex" > NAME< / span > DESCRIPTION STARS OFFICIAL AUTOMATED
< span class = "ex" > ubuntu< / span > Ubuntu is a Debian-based Linux operating s... 2065 [OK][](.html)
< span class = "ex" > debian< / span > Debian is a Linux distribution that< span class = "st" > ' s comp... 603 [OK][](.html)< / span >
2016-04-14 14:20:23 +02:00
< span class = "st" > google/debian 47 [OK][](.html)< / span > < / code > < / pre > < / div >
< h4 id = "show-available-tags-for-a-repository" > Show available tags for a repository< / h4 >
2016-10-12 12:36:59 +02:00
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "ex" > curl< / span > https://index.docker.io/v1/repositories/debian/tags < span class = "kw" > |< / span > < span class = "ex" > python< / span > -m json.tool
2016-04-14 14:20:23 +02:00
2016-10-12 12:36:59 +02:00
< span class = "ex" > %< / span > Total % Received % Xferd Average Speed Time Time Time Current
< span class = "ex" > Dload< / span > Upload Total Spent Left Speed
< span class = "ex" > 100< / span > 1283 0 1283 0 0 433 0 --:--:-- 0:00:02 --:--:-- 433< / code > < / pre > < / div >
2016-04-14 14:20:23 +02:00
< p > Sample output:< / p >
< div class = "sourceCode" > < pre class = "sourceCode json" > < code class = "sourceCode json" > < span class = "ot" > [[]< / span > < span class = "er" > (.html)< / span >
< span class = "fu" > {< / span >
< span class = "dt" > " layer" < / span > < span class = "fu" > :< / span > < span class = "st" > " 85a02782" < / span > < span class = "fu" > ,< / span >
< span class = "dt" > " name" < / span > < span class = "fu" > :< / span > < span class = "st" > " stretch" < / span >
< span class = "fu" > }< / span > < span class = "ot" > ,< / span >
< span class = "fu" > {< / span >
< span class = "dt" > " layer" < / span > < span class = "fu" > :< / span > < span class = "st" > " 59abecbc" < / span > < span class = "fu" > ,< / span >
< span class = "dt" > " name" < / span > < span class = "fu" > :< / span > < span class = "st" > " testing" < / span >
< span class = "fu" > }< / span > < span class = "ot" > ,< / span >
< span class = "fu" > {< / span >
< span class = "dt" > " layer" < / span > < span class = "fu" > :< / span > < span class = "st" > " bf0fd686" < / span > < span class = "fu" > ,< / span >
< span class = "dt" > " name" < / span > < span class = "fu" > :< / span > < span class = "st" > " unstable" < / span >
< span class = "fu" > }< / span > < span class = "ot" > ,< / span >
< span class = "fu" > {< / span >
< span class = "dt" > " layer" < / span > < span class = "fu" > :< / span > < span class = "st" > " 60c52dbe" < / span > < span class = "fu" > ,< / span >
< span class = "dt" > " name" < / span > < span class = "fu" > :< / span > < span class = "st" > " wheezy" < / span >
< span class = "fu" > }< / span > < span class = "ot" > ,< / span >
< span class = "fu" > {< / span >
< span class = "dt" > " layer" < / span > < span class = "fu" > :< / span > < span class = "st" > " c5b806fe" < / span > < span class = "fu" > ,< / span >
< span class = "dt" > " name" < / span > < span class = "fu" > :< / span > < span class = "st" > " wheezy-backports" < / span >
< span class = "fu" > }< / span >
< span class = "ot" > ]< / span > < / code > < / pre > < / div >
< h4 id = "pull-an-image-from-dockerhub" > Pull an image from DockerHub< / h4 >
2016-10-12 12:36:59 +02:00
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "ex" > docker< / span > pull repository[:tag][](.html)
2016-04-14 14:20:23 +02:00
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > docker< / span > pull debian:wheezy
< span class = "ex" > wheezy< / span > : Pulling from debian
< span class = "ex" > 4c8cbfd2973e< / span > : Pull complete
< span class = "ex" > 60c52dbe9d91< / span > : Pull complete
< span class = "ex" > Digest< / span > : sha256:c584131da2ac1948aa3e66468a4424b6aea2f33acba7cec0b631bdb56254c4fe
< span class = "ex" > Status< / span > : Downloaded newer image for debian:wheezy< / code > < / pre > < / div >
2016-04-14 14:20:23 +02:00
< h2 id = "get-and-run-a-shaarli-image" > Get and run a Shaarli image< / h2 >
< h3 id = "dockerhub-repository" > DockerHub repository< / h3 >
< p > The images can be found in the < a href = "https://hub.docker.com/r/shaarli/shaarli/" > < code > shaarli/shaarli< / code > < / a > < a href = ".html" > < / a > < br / >
repository.< / p >
< h3 id = "available-image-tags" > Available image tags< / h3 >
< ul >
< li > < code > latest< / code > : master branch (tarball release)< / li >
< li > < code > stable< / code > : stable branch (tarball release)< / li >
< li > < code > dev< / code > : master branch (Git clone)< / li >
< / ul >
< p > All images rely on:< / p >
< ul >
< li > < a href = "https://hub.docker.com/_/debian/" > Debian 8 Jessie< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "http://php-fpm.org/" > PHP5-FPM< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "http://nginx.org/" > Nginx< / a > < a href = ".html" > < / a > < / li >
< / ul >
< h3 id = "download-from-dockerhub" > Download from DockerHub< / h3 >
2016-10-12 12:36:59 +02:00
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "ex" > docker< / span > pull shaarli/shaarli
< span class = "ex" > latest< / span > : Pulling from shaarli/shaarli
< span class = "ex" > 32716d9fcddb< / span > : Pull complete
< span class = "ex" > 84899d045435< / span > : Pull complete
< span class = "ex" > 4b6ad7444763< / span > : Pull complete
< span class = "ex" > e0345ef7a3e0< / span > : Pull complete
< span class = "ex" > 5c1dd344094f< / span > : Pull complete
< span class = "ex" > 6422305a200b< / span > : Pull complete
< span class = "ex" > 7d63f861dbef< / span > : Pull complete
< span class = "ex" > 3eb97210645c< / span > : Pull complete
< span class = "ex" > 869319d746ff< / span > : Already exists
< span class = "ex" > 869319d746ff< / span > : Pulling fs layer
< span class = "ex" > 902b87aaaec9< / span > : Already exists
< span class = "ex" > Digest< / span > : sha256:f836b4627b958b3f83f59c332f22f02fcd495ace3056f2be2c4912bd8704cc98
< span class = "ex" > Status< / span > : Downloaded newer image for shaarli/shaarli:latest< / code > < / pre > < / div >
2016-04-14 14:20:23 +02:00
< h3 id = "create-and-start-a-new-container-from-the-image" > Create and start a new container from the image< / h3 >
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > < span class = "co" > # map the host' s :8000 port to the container' s :80 port< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > docker< / span > create -p 8000:80 shaarli/shaarli
< span class = "ex" > d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101< / span >
2016-04-14 14:20:23 +02:00
< span class = "co" > # launch the container in the background< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > docker< / span > start d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101
< span class = "ex" > d40b7af693d678958adedfb88f87d6ea0237186c23de5c4102a55a8fcb499101< / span >
2016-04-14 14:20:23 +02:00
< span class = "co" > # list active containers< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > docker< / span > ps
< span class = "ex" > CONTAINER< / span > ID IMAGE COMMAND CREATED STATUS PORTS NAMES
< span class = "ex" > d40b7af693d6< / span > shaarli/shaarli /usr/bin/supervisor 15 seconds ago Up 4 seconds 0.0.0.0:8000-< span class = "op" > > < / span > 80/tcp backstabbing_galileo< / code > < / pre > < / div >
2016-04-14 14:20:23 +02:00
< h3 id = "stop-and-destroy-a-container" > Stop and destroy a container< / h3 >
2016-10-12 12:36:59 +02:00
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "ex" > docker< / span > stop backstabbing_galileo < span class = "co" > # those docker guys are really rude to physicists!< / span >
< span class = "ex" > backstabbing_galileo< / span >
2016-04-14 14:20:23 +02:00
< span class = "co" > # check the container is stopped< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > docker< / span > ps
< span class = "ex" > CONTAINER< / span > ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2016-04-14 14:20:23 +02:00
< span class = "co" > # list ALL containers< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > docker< / span > ps -a
< span class = "ex" > CONTAINER< / span > ID IMAGE COMMAND CREATED STATUS PORTS NAMES
< span class = "ex" > d40b7af693d6< / span > shaarli/shaarli /usr/bin/supervisor 5 minutes ago Exited (0) < span class = "ex" > 48< / span > seconds ago backstabbing_galileo
2016-04-14 14:20:23 +02:00
< span class = "co" > # destroy the container< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > docker< / span > rm backstabbing_galileo < span class = "co" > # let' s put an end to these barbarian practices< / span >
< span class = "ex" > backstabbing_galileo< / span >
2016-04-14 14:20:23 +02:00
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > docker< / span > ps -a
< span class = "ex" > CONTAINER< / span > ID IMAGE COMMAND CREATED STATUS PORTS NAMES< / code > < / pre > < / div >
2016-04-14 14:20:23 +02:00
< h2 id = "resources" > Resources< / h2 >
< h3 id = "docker-1" > Docker< / h3 >
< ul >
< li > < a href = "http://blog.thoward37.me/articles/where-are-docker-images-stored/" > Where are Docker images stored?< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "https://docs.docker.com/reference/builder/" > Dockerfile reference< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "https://docs.docker.com/articles/dockerfile_best-practices/" > Dockerfile best practices< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "https://docs.docker.com/userguide/dockervolumes/" > Volumes< / a > < a href = ".html" > < / a > < / li >
< / ul >
< h3 id = "dockerhub" > DockerHub< / h3 >
< ul >
< li > < a href = "https://docs.docker.com/userguide/dockerrepos/" > Repositories< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "https://docs.docker.com/docker-hub/orgs/" > Teams and organizations< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "https://docs.docker.com/docker-hub/github/" > GitHub automated build< / a > < a href = ".html" > < / a > < / li >
< / ul >
< h3 id = "service-management" > Service management< / h3 >
< ul >
< li > < a href = "https://docs.docker.com/articles/using_supervisord/" > Using supervisord< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "http://nginx.org/en/docs/ngx_core_module.html#daemon" > Nginx in the foreground< / a > < a href = ".html" > < / a > < / li >
< li > < a href = "http://supervisord.org/" > supervisord< / a > < a href = ".html" > < / a > < / li >
< / ul >
< / body >
< / html >