]>
Commit | Line | Data |
---|---|---|
53ed6d7d | 1 | ## Basics |
2 | Install [Docker](https://www.docker.com/), by following the instructions relevant | |
3 | to your OS / distribution, and start the service. | |
4 | ||
5 | ### Search an image on [DockerHub](https://hub.docker.com/) | |
6 | ||
7 | ```bash | |
8 | $ docker search debian | |
9 | ||
10 | NAME DESCRIPTION STARS OFFICIAL AUTOMATED | |
11 | ubuntu Ubuntu is a Debian-based Linux operating s... 2065 [OK] | |
12 | debian Debian is a Linux distribution that's comp... 603 [OK] | |
13 | google/debian 47 [OK] | |
14 | ``` | |
15 | ||
16 | ### Show available tags for a repository | |
17 | ```bash | |
18 | $ curl https://index.docker.io/v1/repositories/debian/tags | python -m json.tool | |
19 | ||
20 | % Total % Received % Xferd Average Speed Time Time Time Current | |
21 | Dload Upload Total Spent Left Speed | |
22 | 100 1283 0 1283 0 0 433 0 --:--:-- 0:00:02 --:--:-- 433 | |
23 | ``` | |
24 | ||
25 | Sample output: | |
26 | ```json | |
27 | [ | |
28 | { | |
29 | "layer": "85a02782", | |
30 | "name": "stretch" | |
31 | }, | |
32 | { | |
33 | "layer": "59abecbc", | |
34 | "name": "testing" | |
35 | }, | |
36 | { | |
37 | "layer": "bf0fd686", | |
38 | "name": "unstable" | |
39 | }, | |
40 | { | |
41 | "layer": "60c52dbe", | |
42 | "name": "wheezy" | |
43 | }, | |
44 | { | |
45 | "layer": "c5b806fe", | |
46 | "name": "wheezy-backports" | |
47 | } | |
48 | ] | |
49 | ||
50 | ``` | |
51 | ||
52 | ### Pull an image from DockerHub | |
53 | ```bash | |
54 | $ docker pull repository[:tag] | |
55 | ||
56 | $ docker pull debian:wheezy | |
57 | wheezy: Pulling from debian | |
58 | 4c8cbfd2973e: Pull complete | |
59 | 60c52dbe9d91: Pull complete | |
60 | Digest: sha256:c584131da2ac1948aa3e66468a4424b6aea2f33acba7cec0b631bdb56254c4fe | |
61 | Status: Downloaded newer image for debian:wheezy | |
62 | ``` | |
22a30602 | 63 | |
df8becac | 64 | Docker re-uses layers already downloaded. In other words if you have images based on Alpine or some Ubuntu version for example, those can share disk space. |
22a30602 B |
65 | |
66 | ### Start a container | |
67 | A container is an instance created from an image, that can be run and that keeps running until its main process exits. Or until the user stops the container. | |
68 | ||
69 | The simplest way to start a container from image is ``docker run``. It also pulls the image for you if it is not locally available. For more advanced use, refer to ``docker create``. | |
70 | ||
df8becac | 71 | Stopped containers are not destroyed, unless you specify ``--rm``. To view all created, running and stopped containers, enter: |
22a30602 B |
72 | ```bash |
73 | $ docker ps -a | |
74 | ``` | |
75 | ||
df8becac | 76 | Some containers may be designed or configured to be restarted, others are not. Also remember both network ports and volumes of a container are created on start, and not editable later. |
22a30602 B |
77 | |
78 | ### Access a running container | |
60ed9b8f | 79 | A running container is accessible using ``docker exec``, or ``docker copy``. You can use ``exec`` to start a root shell in the Shaarli container: |
22a30602 B |
80 | ```bash |
81 | $ docker exec -ti <container-name-or-id> bash | |
82 | ``` | |
df8becac | 83 | Note the names and ID's of containers are listed in ``docker ps``. You can even type only one or two letters of the ID, given they are unique. |
22a30602 B |
84 | |
85 | Access can also be through one or more network ports, or disk volumes. Both are specified on and fixed on ``docker create`` or ``run``. | |
86 | ||
62a8b0ff B |
87 | You can view the console output of the main container process too: |
88 | ```bash | |
89 | $ docker logs -f <container-name-or-id> | |
90 | ``` | |
91 | ||
22a30602 B |
92 | ### Docker disk use |
93 | Trying out different images can fill some gigabytes of disk quickly. Besides images, the docker volumes usually take up most disk space. | |
94 | ||
df8becac | 95 | If you care only about trying out docker and not about what is running or saved, the following commands should help you out quickly if you run low on disk space: |
22a30602 B |
96 | |
97 | ```bash | |
98 | $ docker rmi -f $(docker images -aq) # remove or mark all images for disposal | |
99 | $ docker volume rm $(docker volume ls -q) # remove all volumes | |
100 | ``` | |
62a8b0ff | 101 | |
df8becac B |
102 | ### Systemd config |
103 | Systemd is the process manager of choice on Debian-based distributions. Once you have a ``docker`` service installed, you can use the following steps to set up Shaarli to run on system start. | |
62a8b0ff B |
104 | |
105 | ```bash | |
106 | systemctl enable /etc/systemd/system/docker.shaarli.service | |
107 | systemctl start docker.shaarli | |
108 | systemctl status docker.* | |
109 | journalctl -f # inspect system log if needed | |
110 | ``` | |
111 | ||
112 | You will need sudo or a root terminal to perform some or all of the steps above. Here are the contents for the service file: | |
113 | ``` | |
114 | [Unit] | |
115 | Description=Shaarli Bookmark Manager Container | |
116 | After=docker.service | |
117 | Requires=docker.service | |
118 | ||
119 | ||
120 | [Service] | |
121 | Restart=always | |
122 | ||
df8becac | 123 | # Put any environment you want in an included file, like $host- or $domainname in this example |
62a8b0ff B |
124 | EnvironmentFile=/etc/sysconfig/box-environment |
125 | ||
126 | # It's just an example.. | |
127 | ExecStart=/usr/bin/docker run \ | |
128 | -p 28010:80 \ | |
129 | --name ${hostname}-shaarli \ | |
130 | --hostname shaarli.${domainname} \ | |
62a8b0ff B |
131 | -v /srv/docker-volumes-local/shaarli-data:/var/www/shaarli/data:rw \ |
132 | -v /etc/localtime:/etc/localtime:ro \ | |
df8becac | 133 | shaarli/shaarli:latest |
62a8b0ff B |
134 | |
135 | ExecStop=/usr/bin/docker rm -f ${hostname}-shaarli | |
136 | ||
137 | ||
138 | [Install] | |
139 | WantedBy=multi-user.target | |
140 | ``` |