update docker readme
This commit is contained in:
parent
521b772188
commit
eb69814391
183
docker/README.md
183
docker/README.md
@ -70,55 +70,115 @@ Docker provides volumes for persistent storage, ensuring data remains even if a
|
|||||||
|
|
||||||
Tools like Docker Compose and Kubernetes are used to manage and scale multiple containers in production environments.
|
Tools like Docker Compose and Kubernetes are used to manage and scale multiple containers in production environments.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Workflow example
|
## Workflow example
|
||||||
|
|
||||||
1. Write a Dockerfile to package the application.
|
1. Write a __Dockerfile__ to __package the application__.
|
||||||
2. Build the Docker image using docker build.
|
2. Build the Docker __image__ using __docker build__.
|
||||||
3. Run the image as a container using docker run.
|
3. Run the image as a __container__ using __docker run__.
|
||||||
4. Use Docker Compose to manage multiple containers for a complete application (e.g., web server + database).
|
4. Use __Docker Compose__ to manage __multiple containers__ for a complete application (e.g., web server + database).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Docker Image
|
# Docker Image
|
||||||
|
|
||||||
Docker images are the building blocks for containers. An image is a static snapshot of an environment that contains all necessary dependencies for an application.
|
Docker images are the building blocks for containers. An image is a static snapshot of an environment that contains all necessary dependencies for an application.
|
||||||
Images are created using a `Dockerfile` and can be stored and shared via a Docker registry like Docker Hub.
|
|
||||||
|
|
||||||
|
__Images can either be built, or existing images can be pulled from a registry.__
|
||||||
|
|
||||||
|
## Docker Registry
|
||||||
|
|
||||||
## Dockerfile
|
By default, Docker __pulls__ images from __Docker Hub__, the default public registry for Docker images. \
|
||||||
|
For example `image: 'jc21/nginx-proxy-manager:latest'` Docker will search for the image `jc21/nginx-proxy-manager` on Docker Hub and pull the latest tag (or version).
|
||||||
|
|
||||||
`Dockerifle` ist eine einfache Textdatei, mit der man eigene Images bauen kann. Sie basieren immer auf einem bestehenden base Image (z.B. nginx:latest). Mit `docker build` wird das image erstellt, bevor man es mit `docker run` starten kann.
|
If the image is hosted on a different container registry (e.g., Amazon Elastic Container Registry, Google Container Registry, or a private registry), you must provide the __full registry URL__ as a prefix, like e.g. `image: 'myregistry.example.com/myimage:latest'`. Docker will pull the image from `myregistry.example.com`.
|
||||||
|
|
||||||
|
Before attempting to download the image, Docker checks if the image already exists locally in the __cache__. If found, it uses the local copy.
|
||||||
|
|
||||||
|
If the registry requires __authentication__, you must log in using `docker login <registry_url>` or configure credentials in the Docker Compose file.
|
||||||
## Building Image
|
|
||||||
|
|
||||||
Im Ordner wo das Dockerfile liegt, ausführen: `docker build -t node-app:1.0 .`, wobei `node-app` ein x-beliebiger Name ist für das image, und anschl. die Version. Dann starten mit `docker run -d -p 80:3000 node-app:1.0` wenn man es auf Port 80 von aussen laufen lassen will.
|
|
||||||
|
|
||||||
Dockerfile Doku unter https://docs.docker.com/reference/builder
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Docker Hub
|
|
||||||
|
|
||||||
hier gibt es vorgefertigte Images.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$ docker login
|
docker login
|
||||||
$ docker pull
|
docker pull
|
||||||
etc.
|
etc.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Own App: Dockerfile
|
||||||
|
|
||||||
## Commands
|
`Dockerfile` ist eine einfache Textdatei, mit der man eigene Images bauen kann. Sie basieren immer auf einem bestehenden base Image (z.B. `nginx:latest` oder `node:16.13.0-alpine`). Mit `docker build` wird das image erstellt, bevor man es mit `docker run` starten kann.
|
||||||
|
|
||||||
### Anzeigen aller Images
|
Dockerfile documentation: https://docs.docker.com/reference/builder
|
||||||
|
|
||||||
|
## Build Docker image
|
||||||
|
|
||||||
|
Im Ordner wo das Dockerfile liegt, ausführen:
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo docker images
|
docker build .
|
||||||
|
```
|
||||||
|
|
||||||
|
Um dem Image einen Namen und einen Tag zu geben (1.0 ist im folgenden Beispiel der Tag)
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build -t node-app:1.0 .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run docker image
|
||||||
|
|
||||||
|
Image, which was either pulled from a registry or was built on the system, can be run with:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -d -p 3000:80 -e FOO='bar' -FOO2='bar2' --name myApp node-app:1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
- `-d` Optional. For detached mode (run in background)
|
||||||
|
- `-p 3000:80` Optional. Traffic on port 3000, and port 80 inside the container.
|
||||||
|
- `-e` Optional. Environment Parameter, that will be passed on to the container
|
||||||
|
- `--name` Optional. Name for container.
|
||||||
|
- `--restart` Optional. Restart policy. `no`, `on-failure:5`, `always`
|
||||||
|
- `node-app:1.0` image/tag to be started.
|
||||||
|
|
||||||
|
## Show all docker images
|
||||||
|
|
||||||
|
```
|
||||||
|
docker images
|
||||||
|
docker image ls # alternativ
|
||||||
|
```
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
rogrut@zidbacons02:/$ docker images
|
||||||
|
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||||
|
docker dind 0f7ea23310b3 3 weeks ago 397MB
|
||||||
|
docker <none> 7a9eec921ea3 2 months ago 378MB
|
||||||
|
cr.gitlab.uzh.ch/dba/digicert/export-digicert/main e9af5b08 95248f27c850 2 months ago 261MB
|
||||||
|
caddy latest 1b7d0a82297a 3 months ago 48.5MB
|
||||||
|
alpine <none> b0c9d60fc5e3 3 months ago 7.83MB
|
||||||
|
curlimages/curl latest 7551dbeefe0d 4 months ago 21.8MB
|
||||||
|
```
|
||||||
|
|
||||||
|
## Delete Docker image
|
||||||
|
|
||||||
|
```
|
||||||
|
docker rmi <REPOSITORY:TAG>
|
||||||
|
docker rmi ubuntu:2010
|
||||||
|
```
|
||||||
|
|
||||||
|
## Add Tag to Docker image
|
||||||
|
|
||||||
|
The following will clone the image with a new tag, but has the same IMAGE ID.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker tag <REPOSITORY>:<TAG> <REPOSITORY>:<new tag, e.g. 1.0 instead of latest>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Push Docker image to repository
|
||||||
|
|
||||||
|
the following will clone an image and add a tag that can be used to push to a repository. It will then push it to the repo.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker tag myApp:latest myApp:latest repository-example.com/rogerrutishauser/myApp:latest
|
||||||
|
docker login
|
||||||
|
docker push
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -127,8 +187,7 @@ sudo docker images
|
|||||||
Ein Container ist ein Image, welches gerade ausgeführt wird. Wenn ein Image mit `docker run nginx` ausgeführt wird, spricht man von einem Container. Es ist vergleichbar mit einem Prozess. Container wird auf Basis eines Ausgangs-Images gestartet.
|
Ein Container ist ein Image, welches gerade ausgeführt wird. Wenn ein Image mit `docker run nginx` ausgeführt wird, spricht man von einem Container. Es ist vergleichbar mit einem Prozess. Container wird auf Basis eines Ausgangs-Images gestartet.
|
||||||
|
|
||||||
|
|
||||||
|
## Share data
|
||||||
## Daten Teilen
|
|
||||||
|
|
||||||
### 1. Möglichkeit: Verzeichnisse mappen (Host-Verzeichnis im Container mappen)
|
### 1. Möglichkeit: Verzeichnisse mappen (Host-Verzeichnis im Container mappen)
|
||||||
|
|
||||||
@ -218,18 +277,20 @@ $ docker run -it -P --link mongodb:mongo ubuntu:20.04 /bin/bash
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Commands
|
## Container Commands
|
||||||
|
|
||||||
### Anzeigen aller Container
|
### Anzeigen aller Container
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo docker ps -a
|
docker ps -a
|
||||||
|
docker container ls -a # alternativ
|
||||||
```
|
```
|
||||||
|
|
||||||
Nur laufende:
|
Nur laufende:
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo docker ps
|
docker ps
|
||||||
|
docker container ls # alternativ
|
||||||
```
|
```
|
||||||
|
|
||||||
### Ausgabe eines Containers anzeigen
|
### Ausgabe eines Containers anzeigen
|
||||||
@ -247,14 +308,21 @@ journalctl -xu docker.service
|
|||||||
### Container starten
|
### Container starten
|
||||||
|
|
||||||
```
|
```
|
||||||
docker run --name Test_run ubuntu:20.04
|
docker run -d -p 3000:80 -e --name <beliebiger_containername> <IMAGE ID>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Container stoppen / neu starten
|
### Container stoppen / neu starten
|
||||||
|
|
||||||
```
|
```
|
||||||
docker stop
|
docker stop <containername>
|
||||||
docker restart
|
docker restart <containername>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Container (schneller) stoppen und löschen
|
||||||
|
|
||||||
|
```
|
||||||
|
docker kill <containername>
|
||||||
|
docker rm <containername>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Befehl in Docker Container ausführen
|
### Befehl in Docker Container ausführen
|
||||||
@ -351,29 +419,25 @@ docker-compose --version
|
|||||||
|
|
||||||
## Image Location
|
## Image Location
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
```
|
```
|
||||||
services:
|
services:
|
||||||
nproxy-app:
|
nproxy-app:
|
||||||
image: 'jc21/nginx-proxy-manager:latest'
|
image: 'jc21/nginx-proxy-manager:latest'
|
||||||
|
build: .
|
||||||
```
|
```
|
||||||
|
|
||||||
### Docker Hub:
|
### Registry
|
||||||
|
|
||||||
By default, Docker pulls images from Docker Hub, the default public registry for Docker images.
|
|
||||||
|
|
||||||
In the example `image: 'jc21/nginx-proxy-manager:latest'` Docker will search for the image jc21/nginx-proxy-manager on Docker Hub and pull the latest tag (or version).
|
In docker compose, use `image` to use an existing image from the registry.
|
||||||
|
|
||||||
### Other Registries:
|
```
|
||||||
|
services:
|
||||||
If the image is hosted on a different container registry (e.g., Amazon Elastic Container Registry, Google Container Registry, or a private registry), you must provide the full registry URL as a prefix, like e.g. `image: 'myregistry.example.com/myimage:latest'`. Docker will pull the image from myregistry.example.com.
|
redis:
|
||||||
|
image: redis:latest
|
||||||
### local cache
|
```
|
||||||
|
|
||||||
Before attempting to download the image, Docker checks if the image already exists locally. If found, it uses the local copy.
|
|
||||||
|
|
||||||
### Authentication
|
|
||||||
|
|
||||||
If the registry requires authentication, you must log in using `docker login <registry_url>` or configure credentials in the Docker Compose file.
|
|
||||||
|
|
||||||
### Local Image
|
### Local Image
|
||||||
|
|
||||||
@ -411,10 +475,12 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:latest
|
image: redis:latest
|
||||||
|
|
||||||
|
webapp:
|
||||||
|
build: .
|
||||||
|
image: registry.cs.zi.uzh.ch/zi-adb-dba/export-digicert-report:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Docker Volumes
|
## Docker Volumes
|
||||||
|
|
||||||
There are three volume types:
|
There are three volume types:
|
||||||
@ -457,7 +523,11 @@ volumes:
|
|||||||
o: addr=remote-hostname.com,username=user,password=mysuperpassword,nodev,noexec,nosuid,vers=2.1,uid=1000,gid=1000
|
o: addr=remote-hostname.com,username=user,password=mysuperpassword,nodev,noexec,nosuid,vers=2.1,uid=1000,gid=1000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Show docker volumes
|
||||||
|
|
||||||
|
```
|
||||||
|
docker volume ls
|
||||||
|
```
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
@ -474,3 +544,14 @@ Ins Verzeichnis gehen wo docker-compose.yml liegt, und dann `docker-compose star
|
|||||||
### Events
|
### Events
|
||||||
|
|
||||||
`docker compose events`
|
`docker compose events`
|
||||||
|
|
||||||
|
|
||||||
|
# Allgemeinte Commands
|
||||||
|
|
||||||
|
## Aufräumen
|
||||||
|
|
||||||
|
Löscht alle Images, Volumes, Netzwerke, die nicht mit mind. 1 Container verbunden sind, sowie den Build Cache.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker system prune --all --volumes
|
||||||
|
```
|
||||||
Loading…
Reference in New Issue
Block a user