| Line 29: |
Line 29: |
| | <source lang="bash">docker pull python:2.7 | | <source lang="bash">docker pull python:2.7 |
| | docker run -i -t python:2.7 | | docker run -i -t python:2.7 |
| | + | docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=owncloud\\.rra\\.lan' --restart always --cap-add MKNOD collabora/code |
| | docker docker run -i -t python:2.7 bash | | docker docker run -i -t python:2.7 bash |
| | docker ps -a | | docker ps -a |
| Line 34: |
Line 35: |
| | docker search kali | | docker search kali |
| | docker run -ti -v "/home/rafa/LocalPath:/ContainerPath" git.rra.lan:4443/docker/pilaf_testrunner/converter:latest /bin/bash # mounts local path folder on docker container | | docker run -ti -v "/home/rafa/LocalPath:/ContainerPath" git.rra.lan:4443/docker/pilaf_testrunner/converter:latest /bin/bash # mounts local path folder on docker container |
| | + | |
| | + | # Run container with name and volumes |
| | + | docker run -t -d -p 0.0.0.0:9980:9980 -e "server_name=owncloud\\.rra\\.lan" -v "/etc/collabora/certs:/etc/loolwsd/certs" -e "domain=owncloud\\.rra\\.lan" --restart always --cap-add MKNOD --name collabora collabora/code |
| | + | |
| | + | # View logs |
| | + | docker logs -f collabora |
| | | | |
| | docker images | | docker images |
| Line 39: |
Line 46: |
| | | | |
| | # Remove all containers | | # Remove all containers |
| − | docker rm $(docker ps -aq) | + | docker kill $(docker ps -q) && docker rm $(docker ps -aq) |
| | | | |
| | # Remove one image | | # Remove one image |
| Line 45: |
Line 52: |
| | # Remove incompletely built images: | | # Remove incompletely built images: |
| | docker images | grep -v IMAGE\ ID | awk '{print "docker rmi " $3;}'</source> | | docker images | grep -v IMAGE\ ID | awk '{print "docker rmi " $3;}'</source> |
| | + | |
| | + | ==Docker container root shell== |
| | + | <syntaxhighlight lang="bash"> |
| | + | docker exec -u 0 -it cranky_neumann /bin/bash |
| | + | </syntaxhighlight> |
| | | | |
| | =Restart stopped container with diferent command= | | =Restart stopped container with diferent command= |
| Line 63: |
Line 75: |
| | nano rpi_python/Dockerfile</source> | | nano rpi_python/Dockerfile</source> |
| | | | |
| − | == Docekerfile == | + | ==Docekerfile== |
| | <source lang="dockerfile"># Pull base image | | <source lang="dockerfile"># Pull base image |
| | FROM resin/rpi-raspbian:wheezy | | FROM resin/rpi-raspbian:wheezy |
| Line 83: |
Line 95: |
| | CMD ["bash"]</source> | | CMD ["bash"]</source> |
| | | | |
| − | docker build -t DOCKER_HUB_USERNAME/rpi_python:0.0.1 .
| + | <source lang="bash">docker build -t DOCKER_HUB_USERNAME/rpi_python:0.0.1 . |
| − | # Or with multiple tags
| + | # Or with multiple tags |
| − | docker build -t DOCKER_HUB_USERNAME/rpi_python:0.0.1 -t DOCKER_HUB_USERNAME/rpi_python:latest .
| + | docker build -t DOCKER_HUB_USERNAME/rpi_python:0.0.1 -t DOCKER_HUB_USERNAME/rpi_python:latest . |
| − | # List images
| + | # List images |
| − | docker images
| + | docker images |
| − | # Test image
| + | # Test image |
| − | docker run -rm -it DOCKER_HUB_USERNAME/rpi_python:0.0.1
| + | docker run -rm -it DOCKER_HUB_USERNAME/rpi_python:0.0.1 |
| − | # Login
| + | # Login |
| − | docker login
| + | docker login |
| − | docker push DOCKER_HUB_USERNAME/rpi_python:0.0.1
| + | docker push DOCKER_HUB_USERNAME/rpi_python:0.0.1</source> |
| | | | |
| | ===Pull Modify Commit=== | | ===Pull Modify Commit=== |
| | + | <source lang="bash">sudo docker pull ubuntu |
| | + | sudo docker run ubuntu apt-get install -y ping</source> |
| | | | |
| − | <nowiki>210
| + | Then get the container id using this command: |
| − | down vote
| + | <source lang="bash">sudo docker ps -l</source> |
| − | accepted
| + | Commit changes to the container: |
| − |
| + | <source lang="bash">sudo docker commit <container_id> iman/ping</source> |
| − |
| + | Then run the container: |
| − | You need to commit the changes you make to the container and then run it. Try this:
| + | <source lang="bash">sudo docker run iman/ping ping www.google.com</source> |
| − |
| |
| − | sudo docker pull ubuntu
| |
| − |
| |
| − | sudo docker run ubuntu apt-get install -y ping
| |
| − |
| |
| − | Then get the container id using this command:
| |
| − |
| |
| − | sudo docker ps -l
| |
| − |
| |
| − | Commit changes to the container:
| |
| − |
| |
| − | sudo docker commit <container_id> iman/ping
| |
| − |
| |
| − | Then run the container:
| |
| − |
| |
| − | sudo docker run iman/ping ping www.google.com</nowiki>
| |
| | | | |
| | ==Docker mirror== | | ==Docker mirror== |
| Line 139: |
Line 137: |
| | done | | done |
| | | | |
| | + | </syntaxhighlight> |
| | + | |
| | + | ==Run command on running container== |
| | + | <syntaxhighlight lang="bash"> |
| | + | docker exec -ti es01 /bin/bash |
| | </syntaxhighlight> | | </syntaxhighlight> |
| | | | |
| | ==Dockerfile reference== | | ==Dockerfile reference== |
| | https://docs.docker.com/engine/reference/builder/ | | https://docs.docker.com/engine/reference/builder/ |
| | + | |
| | + | ==Docker custom registry== |
| | + | <code>docker run --rm -v test-volume:/contents registry.roqs.basf.net/base-images/alpine ls /</code> |
| | + | |
| | + | <br /> |
| | + | |
| | + | ==Docker-compose== |
| | + | ===Use this docker compose to run the project locally=== |
| | + | |
| | + | *To start all services: |
| | + | |
| | + | <code>docker-compose up --build --remove-orphans --detach</code> |
| | + | |
| | + | *To restart only one service: |
| | + | |
| | + | <code>docker-compose up --build --remove-orphans --detach <service_name></code> |
| | + | |
| | + | *To stop one service: |
| | + | |
| | + | <code>docker-compose stop <service_name></code> |
| | + | |
| | + | *To stop all services: |
| | + | |
| | + | <code>docker-compose down</code> |
| | + | |
| | + | *To view logs of a service: |
| | + | |
| | + | <code>docker-compose logs -f <service_name></code> |
| | + | |
| | + | *To view logs of all services: |
| | + | |
| | + | <code>docker-compose logs -f</code> |
| | + | |
| | + | === docker-compose.yml example for multiple services === |
| | + | <syntaxhighlight lang="yaml"> |
| | + | |
| | + | version: '3.8' |
| | + | |
| | + | services: |
| | + | postgres: |
| | + | image: postgres:14.13 |
| | + | environment: |
| | + | POSTGRES_DB: mydatabase |
| | + | POSTGRES_USER: myuser |
| | + | POSTGRES_PASSWORD: mypassword |
| | + | volumes: |
| | + | - postgres_data:/var/lib/postgresql/data |
| | + | ports: |
| | + | - "5432:5432" |
| | + | |
| | + | redis: |
| | + | image: redis:latest |
| | + | ports: |
| | + | - "6379:6379" |
| | + | |
| | + | celery: |
| | + | build: |
| | + | context: . |
| | + | dockerfile: Dockerfile |
| | + | environment: |
| | + | DJANGO_SETTINGS_MODULE: app.settings |
| | + | REDIS_HOST: redis |
| | + | DB_HOST: postgres |
| | + | DB_PORT: 5432 |
| | + | DB_NAME: mydatabase |
| | + | DB_USER: myuser |
| | + | DB_PASSWORD: mypassword |
| | + | |
| | + | volumes: |
| | + | - .:/app |
| | + | - ./media:/app/media |
| | + | working_dir: /app |
| | + | command: celery -A app worker --loglevel=info |
| | + | depends_on: |
| | + | - postgres |
| | + | - redis |
| | + | |
| | + | flower: |
| | + | build: |
| | + | context: . |
| | + | dockerfile: Dockerfile |
| | + | environment: |
| | + | DJANGO_SETTINGS_MODULE: app.settings |
| | + | DB_HOST: postgres |
| | + | DB_NAME: mydatabase |
| | + | DB_USER: myuser |
| | + | DB_PASSWORD: mypassword |
| | + | REDIS_HOST: redis |
| | + | volumes: |
| | + | - .:/app |
| | + | - ./media:/app/media |
| | + | working_dir: /app |
| | + | command: celery -A app flower --loglevel=info --basic-auth=admin:admin |
| | + | depends_on: |
| | + | - postgres |
| | + | - redis |
| | + | ports: |
| | + | - "5555:5555" |
| | + | |
| | + | django: |
| | + | build: |
| | + | context: . |
| | + | dockerfile: Dockerfile |
| | + | environment: |
| | + | DJANGO_SETTINGS_MODULE: app.settings |
| | + | REDIS_HOST: redis |
| | + | DB_HOST: postgres |
| | + | DB_PORT: 5432 |
| | + | DB_NAME: mydatabase |
| | + | DB_USER: myuser |
| | + | DB_PASSWORD: mypassword |
| | + | volumes: |
| | + | - .:/app |
| | + | - ./media:/app/media |
| | + | working_dir: /app |
| | + | command: python3 manage.py runserver 0.0.0.0:8000 |
| | + | depends_on: |
| | + | - postgres |
| | + | - redis |
| | + | ports: |
| | + | - "8000:8000" |
| | + | |
| | + | volumes: |
| | + | postgres_data: |
| | + | driver: local |
| | + | |
| | + | </syntaxhighlight><br /> |