diff --git a/docker/README.md b/docker/README.md
index 01cccfe..bf81a58 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -6,25 +6,21 @@ include_toc: true
Installation: See separate page [Docker Installation](docker-install.md)
+
+
## Summary
Docker simplifies the development and deployment of applications by providing a lightweight, portable, and consistent containerized environment. It bridges the gap between development and production, enabling developers to focus on building applications without worrying about environment-specific issues. The applications run consistently across different computing environments, whether on a developer's laptop, a test server, or in production.
+
+
## Advantages of Docker
- __Portability:__ Containers ensure applications behave the same regardless of the environment (development, testing, production).
+ - __Efficiency:__ Containers use shared OS resources, making them faster and less resource-intensive compared to VMs.
+ - __Scalability:__ Docker enables rapid scaling of applications by spinning up multiple container instances as needed.
+ - __Isolation:__ Each container runs independently, preventing conflicts between applications.
-Efficiency:
-
-Containers use shared OS resources, making them faster and less resource-intensive compared to VMs.
-
-Scalability:
-
-Docker enables rapid scaling of applications by spinning up multiple container instances as needed.
-
-Isolation:
-
-Each container runs independently, preventing conflicts between applications.
## Key Concepts of Docker
@@ -75,6 +71,7 @@ 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.
+
## Workflow example
1. Write a Dockerfile to package the application.
@@ -82,23 +79,29 @@ Tools like Docker Compose and Kubernetes are used to manage and scale multiple c
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).
----
-## 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.
Images are created using a `Dockerfile` and can be stored and shared via a Docker registry like Docker Hub.
-### Dockerfile
+
+
+## Dockerfile
`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.
-### Building Image
+
+
+## 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.
@@ -109,156 +112,21 @@ $ docker pull
etc.
```
----
-## Docker Container
+## Commands
-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.
-
-## Docker Volumes
-
-There are three volume types:
-
-1. Docker volumes which are stored and handled internally by docker (c.f. docker config to choose where they are actually stored).
-
-```
-version: '3.9'
-services:
- caddy:
- image: caddy:2.6.2
- volumes:
- - caddy_data:/data
-volumes:
- caddy_data
-```
-
-2. Bind mounts which are direct access to the host file system from a container
-
-```
-version: '3.9'
-services:
- caddy:
- image: caddy:2.6.2
- volumes:
- - /opt/docuteam/ssl/certifcate.pem:/cert.pem:ro
-
-3. Bind mounts of remote share which are defined through docker volumes
-version: '3.9'
-services:
- fedora:
- image: docker.cloudsmith.io/docuteam/docker/fcrepo:6.2.0
- volumes:
- - fedora_data:/fcrepo_home
-volumes:
- fedora_data:
- driver_opts:
- type: cifs
- device: //remote-hostname.com/path/to/share/fedora
- o: addr=remote-hostname.com,username=user,password=mysuperpassword,nodev,noexec,nosuid,vers=2.1,uid=1000,gid=1000
-```
-
----
-
-# Docker Befehle
-
-## Anzeigen aller Container
-
-```
-sudo docker ps -a
-```
-
-Nur laufende:
-
-```
-sudo docker ps
-```
-
-## Anzeigen aller Images
+### Anzeigen aller Images
```
sudo docker images
```
-## Ausgabe eines Containers anzeigen
-```
-docker logs
-```
+# Docker Container
-## Docker logs
+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.
-```
-journalctl -xu docker.service
-```
-## Container starten
-
-```
-docker run --name Test_run ubuntu:20.04
-```
-
-## Container stoppen / neu starten
-
-```
-docker stop
-docker restart
-```
-
-## Befehl in Docker Container ausführen
-
-Z.B. MySQL, wobei `wordpress-baumfreunde_db_1` der Container-Name ist, den man mit `docker ps` herausfindet.
-
-```
-sudo docker exec -it wordpress-baumfreunde_db_1 mysql -uroot -p
-```
-
-## Import DB in docker container
-
-```
-sudo docker exec -i wp_db mysql -h 172.17.0.1 -P 3306 --protocol=tcp -uroot -p wp_baum < /var/www/wordpress-from-docker/wp_baum.sql
-```
-
-## Backup DB in docker container
-
-```
-docker exec -it wordpress-baumfreunde_db_1 mysqldump --add-drop-table -uroot -pXXX wp_baum > /home/roru/wordpress-baumfreunde/wp_baum_backup.sql
-```
-
-## Bash in container
-
-```
-sudo docker exec –it /bin/bash
-
-# Alpine
-sudo docker exec –it /bin/sh
-
-# als root
-docker exec -u root -it /bin/bash
-```
-
-## Copying files/folders
-
-### Copy file from host to docker
-
-```
-sudo docker cp "file.txt" c30c199ec89c:/home/actions
-```
-
-### Copy folder from docker to host
-
-```
-sudo docker cp "c30c199ec89c:/home/actions/conf /home/rogrut
-```
-
-## IP des Containers auslesen
-
-```
-docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
-```
-
-## Container entfernen
-
-Zum Container entfernen: `docker stop Test_run` und `docker rm Test_run`.
## Daten Teilen
@@ -293,6 +161,8 @@ $ exit
Die Datei ist jetzt im Datencontainer unter `/data/db`. Der Datencontainer muss gar nicht gestartet werden um ihn zu verwenden.
+
+
## Container verlinken
### Ports verbinden
@@ -347,7 +217,103 @@ $ docker run -it -P --link mongodb:mongo ubuntu:20.04 /bin/bash
```
-## Docker compose
+
+## Commands
+
+### Anzeigen aller Container
+
+```
+sudo docker ps -a
+```
+
+Nur laufende:
+
+```
+sudo docker ps
+```
+
+### Ausgabe eines Containers anzeigen
+
+```
+docker logs
+```
+
+Docker Logs generell:
+
+```
+journalctl -xu docker.service
+```
+
+### Container starten
+
+```
+docker run --name Test_run ubuntu:20.04
+```
+
+### Container stoppen / neu starten
+
+```
+docker stop
+docker restart
+```
+
+### Befehl in Docker Container ausführen
+
+Z.B. MySQL, wobei `wordpress-baumfreunde_db_1` der Container-Name ist, den man mit `docker ps` herausfindet.
+
+```
+sudo docker exec -it wordpress-baumfreunde_db_1 mysql -uroot -p
+```
+
+### Import DB in docker container
+
+```
+sudo docker exec -i wp_db mysql -h 172.17.0.1 -P 3306 --protocol=tcp -uroot -p wp_baum < /var/www/wordpress-from-docker/wp_baum.sql
+```
+
+### Backup DB in docker container
+
+```
+docker exec -it wordpress-baumfreunde_db_1 mysqldump --add-drop-table -uroot -pXXX wp_baum > /home/roru/wordpress-baumfreunde/wp_baum_backup.sql
+```
+
+### Bash in container
+
+```
+sudo docker exec –it /bin/bash
+
+# Alpine
+sudo docker exec –it /bin/sh
+
+# als root
+docker exec -u root -it /bin/bash
+```
+
+### Copy file from host to docker container
+
+```
+sudo docker cp "file.txt" c30c199ec89c:/home/actions
+```
+
+### Copy folder from docker container to host
+
+```
+sudo docker cp "c30c199ec89c:/home/actions/conf /home/rogrut
+```
+
+### Get IP of docker container
+
+```
+docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
+```
+
+### Remove docker container
+
+`docker stop Test_run` und `docker rm Test_run`.
+
+
+
+# Docker compose
- __Purpose:__ Defines and manages multi-container Docker applications.
- __Usage:__ Orchestrates multiple services (containers), networks, and volumes for an application.
@@ -359,7 +325,9 @@ $ docker run -it -P --link mongodb:mongo ubuntu:20.04 /bin/bash
`docker-compose.yml` is the file which includes all nescessary information. It can include multiple services like web (built from a Dockerfile) and db (pulled from Docker Hub).
-### Image Location
+
+
+## Image Location
```
services:
@@ -367,25 +335,25 @@ services:
image: 'jc21/nginx-proxy-manager:latest'
```
-#### Docker Hub:
+### Docker Hub:
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).
-#### Other Registries:
+### Other Registries:
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.
-#### local cache
+### local cache
Before attempting to download the image, Docker checks if the image already exists locally. If found, it uses the local copy.
-#### Authentication
+### Authentication
If the registry requires authentication, you must log in using `docker login ` or configure credentials in the Docker Compose file.
-#### Local Image
+### Local Image
Don't use `image`, but `build`.
@@ -423,18 +391,64 @@ services:
image: redis:latest
```
-### Commands
-#### Start
+
+## Docker Volumes
+
+There are three volume types:
+
+1. Docker volumes which are stored and handled internally by docker (c.f. docker config to choose where they are actually stored).
+
+```
+version: '3.9'
+services:
+ caddy:
+ image: caddy:2.6.2
+ volumes:
+ - caddy_data:/data
+volumes:
+ caddy_data
+```
+
+2. Bind mounts which are direct access to the host file system from a container
+
+```
+version: '3.9'
+services:
+ caddy:
+ image: caddy:2.6.2
+ volumes:
+ - /opt/docuteam/ssl/certifcate.pem:/cert.pem:ro
+
+3. Bind mounts of remote share which are defined through docker volumes
+version: '3.9'
+services:
+ fedora:
+ image: docker.cloudsmith.io/docuteam/docker/fcrepo:6.2.0
+ volumes:
+ - fedora_data:/fcrepo_home
+volumes:
+ fedora_data:
+ driver_opts:
+ type: cifs
+ device: //remote-hostname.com/path/to/share/fedora
+ o: addr=remote-hostname.com,username=user,password=mysuperpassword,nodev,noexec,nosuid,vers=2.1,uid=1000,gid=1000
+```
+
+
+
+## Commands
+
+### Start
Ins Verzeichnis gehen wo docker-compose.yml liegt, und dann `docker-compose start -d`. Mit `-d` wird es im Hintergrund ausgeführt.
-#### Stop
+### Stop
- The `docker-compose stop` command will stop your containers, but it won’t remove them.
- The `docker-compose down` command will stop your containers, but it also removes the stopped containers as well as any networks that were created.
- You can take down 1 step further and add the `-v` flag to remove all volumes too. This is great for doing a full blown reset on your environment by running `docker-compose down -v`.
-#### Events
+### Events
`docker compose events`
\ No newline at end of file