====== Docker stuff ======
[[https://www.freecodecamp.org/news/a-beginners-guide-to-docker-how-to-create-your-first-docker-application-cc03de9b639f/]]
This assumes you are running Docker on Linux, if anybody actually **wants** to use windows, see here:- [[https://www.disney.co.uk/mickey-mouse| Docker on windows]]
===== Build container from Dockerfile =====
This adds a Repository and tag, note the ''.'' at the end is required, it means look in this directory for the Dockerfile:-
# docker build -t unit/abc:apache2-wsgi .
# docker build -t friendlyello --tag=friendlyhello .
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
unit/abc apache2-wsgi 324aaa642a04 10 seconds ago 300MB
==== Export image to file ====
# docker save 601fc78e12f7 > ../wsgi-apache2-v2.tar
==== Import image to Docker ====
root@ubuntu20:~# docker load < wsgi-apache2.tar
ee8944188361: Loading layer [===========================================>] 7.642MB/7.642MB
de7495326c39: Loading layer [===========================================>] 20.48kB/20.48kB
927524753f9c: Loading layer [===========================================>] 20.48kB/20.48kB
378475152b3a: Loading layer [===========================================>] 20.48kB/20.48kB
28d8ea9c3303: Loading layer [===========================================>] 20.99kB/20.99kB
bd7760437189: Loading layer [===========================================>] 2.56kB/2.56kB
Loaded image ID: sha256:5326892bf34d703dccd6d2281baf7dd482d813ccaf4f322639ddc89b2c439700
root@ubuntu20:~# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
uit/abc apache2-wsgi 324aaa642a04 11 days ago 300MB
===== Running container =====
| -p 8080:80 | Map TCP port 80 in the container to port 8080 on the Docker host. |
| -p 192.168.1.100:8080:80 | Map TCP port 80 in the container to port 8080 on the Docker host for connections to host IP 192.168.1.100 |
# docker run -d -p 80:80 324aaa642a04
e0733a7c4fb9bded46e5c0f4f4abd9919ff58a61b311bda4265acfe7dc534e32
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0733a7c4fb9 324aaa642a04 "httpd -D FOREGROUND…" 10 seconds ago Up 8 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp amazing_swartz
Note ''docker ps -a'' shows a history of containers.
''docker logs ''
===== Docker exec =====
https://devconnected.com/docker-exec-command-with-examples/
==== Run bash shell in container ====
# docker exec -it e0733a7c4fb9 /bin/bash
$ docker run -it python-docker-test
docker stop 1bd7ed055412
docker info
docker inspect
docker image rm
$ docker build --tag python-docker-test .
$ docker run --name andrew1 -d -p 4000:80 bae2beae2108
d37e2100cbf0fc61b9cd21ceb0734e19b501c3888fa4bb1411f99a5c2d6beb0a
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d37e2100cbf0 bae2beae2108 "python app.py" 4 seconds ago Up 3 seconds 0.0.0.0:4000->80/tcp andrew1
$
Start and stop containers, background to daemon mode with ''-d''.
$ docker-compose up -d
Recreating 2ndtest_redis_1 ... done
Recreating 2ndtest_web_1 ... done
$
$ docker-compose down
Stopping 2ndtest_web_1 ... done
Stopping 2ndtest_redis_1 ... done
Removing 2ndtest_web_1 ... done
Removing 2ndtest_redis_1 ... done
Removing network 2ndtest_default
$
docker-compose.yml
version: '3'
services:
web:
build: .
image: flask_web
ports:
- "5000:5000"
links:
- redis
networks:
- flask_app
environment:
- REDIS_URL=redis://cache
restart: unless-stopped
redis:
image: "redis:alpine"
container_name: cache
networks:
- flask_app
restart: unless-stopped
networks:
flask_app:
driver: bridge
Run flask bound to external interface:- ### python3 -m flask run --host=0.0.0.0
Or:- flask --app sample --debug run
====== Bind mount persistent storage ======
[[https://docs.docker.com/storage/]]
====== Alpine Linux ======
Install Python
RUN apk update && apk upgrade
RUN apk add python3 py3-pip
This page has been accessed:- \\
Today: {{counter|today}} \\
Yesterday: {{counter|yesterday}} \\
Until now: {{counter|total}} \\