Docker Container
Show help
docker help <command>Show processes in container
docker top <container>Execute command in container
docker exec -it<container_name> <command>Example
docker exec -it my_xenial /bin/bashExample
docker help runDownload of Docker container
docker pull <image_name>:<version>Start Docker Container
docker run [<options>] <image_name>[:<tag>] '[<command>] [<args>...]Example
docker run hello-worldStart interactive
docker run -i -t ubuntu /bin/bashStarts ubuntu container in interactive mode, prompt in terminal
Detached start (Background)
docker run --name hello_docker -d skimpytoo/hello-dockerSet environmentvariables
Docker run -e VARIABLE1=VAL1 -e VARIABLE2=VAL2Start explicit version
docker run <image_name>:<version-tag>Example
docker run ubuntu:xenial
docker pull ubuntu:xenialPort forwarding
docker run –name <name> -d -p 8080:80 <image_name>
ContainerPort 80-> Port on outside 8080Example
docker run --name test-nginx -d -p 8080:80 nginxRemove Container after exit
docker run --name hello_docker -d -rm skimpytoo/hello-dockerMount Volume
--v | --volume [<VOLUME_NAME >]:<mount_path>[:<options>]
or
--mount <key>=<value> [,<key>=<value> [,…]]Example
docker run -i -t --name=voltest --mount source=test-vol,target=/test_data ubuntu /bin/bash
docker run -i -t --name=voltest2 -v test-vol:/test_data ubuntu /bin/bashUse defined network
docker container run -d --name nginx --network test_net nginxList containers
docker container ls [<optionen>]Examples
docker container ls List all running containers
docker container ls -all List running and stopped containersConnect terminal with container
docker container attach [<OPTIONEN>] <CONTAINER>Stop container
docker stop <container_name>Example
docker stop hello-dockerRestart container
docker restart <container_name>Kill container
docker kill [<optionen>] <container> [<container> …]Example
docker kill hello-dockerRemove container
docker container rm <container_name>Example
docker container rm hello-dockerList running container
docker container lsImages
Download images
docker image pull <image_name>:<version>List downloaded images
docker image lsSearch image
docker search <image name>Example
docker search hello-worldCreate own images
docker build -t skimpytoo/hello-docker .DockerFile:
FROM ubuntu:latest
CMD [“/bin/bash”]Publish in dockerhub
Login
docker loginPush to dockerhub
docker push [OPTIONS] NAME[:TAG]Examples
docker push <DOCKER_ID>/hello-dockerVolumes
Create volume
docker volume create <volume_name>List volumes
docker volume lsGet detailinformationen
docker volume inspect <volume_name>Volume löschen
docker volume rm <volume_name>Logs
Show logs
docker logs <container_name>Options
-f, --follow Add new incoming loglines
--tail <number> Number of loglines
--details Additional information
--timestamp, -t With timestampChange log driver
docker run --name example_app --log-driver none -d -p 8808:80 test/example-appPersist log entries
docker run --name example_app -d -p 8808:80 -v volumename:/var/log test/example-appNetwork
List networks
docker network ls
Standard: none, host, bridge
‚overlay‘ Network that can connect multiple networks
```cmd
## Network details
```cmd
Docker network inspect <network>Show networks
docker network create [<OPTIONEN>] <NAME>Examples
docker network create –d bridge test_net
Neues Netzwerk, basierend auf bridgeConnect container with network
docker network connect [<OPTIONEN>] <NETZWERK> <CONTAINER>Example
docker network connect demo_net nginxRemoveContainer von Netzwerk trennen
docker network disconnect [<OPTIONS>] <NETZWERK> <CONTAINER>Example
docker network disconnect test_net nginxDocker Compose
Searches per default for
- ./docker-compose.yml
- ./docker-compose.yaml
Start
docker-compose up -dStop
docker-compose downLogs
docker-compose logsPrints the logs of all containers
Scale
docker-compose up --scale redis-master=3 –d
or inside docker-compose.yml
scale: 3 Unter ServiceEnvironmentvariables
Searches by default in
.envYou can use the variables in docker-compose.yaml like
${VARIABLEN_NAME}Example
.env:
NGINX_VERSION=1.17.7
docker-compose.yaml:
services:
my_web:
image: "nginx:${NGINX_VERSION}"Defaultvalues
: after variablename defines the default
Example
image: "nginx:${NGINX_VERSION:-latest}" – latest, if variable is not set, or empty
image: "nginx:${NGINX_VERSION-latest}" - latest, if variable not set
image: "nginx:${NGINX_VERSION:latest}" - latest, if variable emptyDefine environment variable in container
Environment-section in service
services:
ubuntu_ext:
…
environment:
- DATABASE=my_db or DATABASE: my_db
- BRANCH=developTo use variables from .env, just use the name
environment:
- DATABASE
- BRANCHDependent Container
In docker-compose.yml
services:
database:
…
wordpress:
depends_on:
- databaseInfo
docker infoDocker Swarm
Nodes
Manager Nodes
They assign tasks and ensure that the swarm's status always remains correct. There is always a node leader.
Worker Nodes
Executes the tasks
Initialise
docker swarm initCreates a manager node on the current node
Token to join manager
docker swarm join-token worker | managerAdd manager node
docker swarm join --token SWMTKN-1-3t516o9d5wo36ao2fyh8w5ma4oqmithampjm87jq163r29ihpd-1fyx2ecncnyd5be99oavt8fl4 192.168.65.3:2377Options
- --advertise-addr Define address to connect to
- --replicas=5 How many replicas to create
Show nodes
docker node lsInformationen about node
docker node inspect –pretty a1b3 //a1b3= Teil der Node-IdShow running tasks in node
Docker node ps [node]Remove node out of swarm
docker swarm [--force] leave- Managers should be removed last.
- Managers must be specified with –force, otherwise it will be ignored.
Remove node
docker node rm [node]Geht erst, wenn der Node aus dem Swarm entfernt ist
Promote to manager node
docker node promote [node]Degrade/Demote
docker node demote [node]Services
Create service
docker service create <image>- -p Portmapping (like docker run)
Show all services
docker service lsShow tasks in service
docker service ps <node>Remove service
docker service rm <service>Update docker service
docker service update <service>Example
docker service update --replicas=6 my_service
docker service update --replicas=3 --publish-add published=8080,target=80 my_serviceChange scaling
docker service scale my_service=4Undo changes
Docker service rollback my_serviceLog services/tasks
docker service logs service|taskDetails about service
Docker service inspect <service>Docker Config
Config files can be created and added to the swarm. They are then available to all nodes (text, binary). Only works with swarm services.
Create config
docker config create <Config_name> <Config-File>
or
docker config create <Config_name> - Liest von StdIn einList configs
docker config lsShow details of config
docker config inspect --pretty <config_name>Pass config to service
docker service create --name my_redis --config my_config --replicas=3 redis:alpineRemove config
First remove from all services
docker service update --config-rm my_config my_redisafter that
docker config rm my_configDocker Secrets
Ähnlich wie config nur verschlüsselt und nur für
Erzeugen eines Secret
docker secret create <secret_name> <Config-File>
or
docker secret create <secret_name> - Liest von StdIn einList all secrets
docker secret lsShow details of secret
docker secret inspect --pretty <secret_name>Pass secret to service
docker service create --name my_redis --secret my_secret --replicas=3 redis:alpineRemove secret
First remove from all services
docker service update --secret-rm my_secret my_redisafter that
docker secret rm my_secretDocker Stack
Similar to docker-compose but for swarm services (definition of services, configs, secrets, replicas,…) in a yaml file
