lwc:docker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lwc:docker [2026/01/24 14:34] John Harrisonlwc:docker [2026/03/01 10:34] (current) John Harrison
Line 17: Line 17:
   * copy files from docker container: ''docker cp container_id:/foot.txt foo.txt''   * copy files from docker container: ''docker cp container_id:/foot.txt foo.txt''
   * prune unneeded files (save disk space): ''sudo docker system prune -a -f''   * prune unneeded files (save disk space): ''sudo docker system prune -a -f''
 +
 +===== Docker Maintenance =====
 +  * ''docker system df'': show overall space usage by category
 +  * ''docker inspect $(docker ps -q) | grep -A 10 Mounts'': see what volume goes with what container
 +  * ''docker inspect CONTAINER_NAME --format '{{range .Mounts}}{{.Name}} -> {{.Destination}}{{println}}{{end}}' '': list what volume is associated with the container
 +  * ''docker ps'': list docker containers
 +  * 
 +
 +===== Housekeeping =====
 +  * When removing a service use ''docker compose down -v'' instead of ''docker compose down.''
 +    *  The ''-v'' removes the associated volumes at the same time.
 +  * When updating images, after pulling and restarting, run ''docker image prune'' to remove the dangling images
 +  * ''docker ps -a'': see all containers, even the ones that are stopped
 +  * 
 +==== Watchtower ====
 +  * Watchtower is a container which auto updates Docker containers
 +  * It will only update containers with updates that have the same tag
 +    * to always get the latest version use the tag ''latest''
 +    * you can check which images have which tags with ''docker images''
 +      * some images might have ''latest'' but not be base images so they won't be updated
 +  * check the logs: ''docker logs watchtower''
 +  * if you want Watchtower to skip trying to update an image add to ''docker-compose.yml''
 +<code>
 + services:
 +  db:
 +    # label the image as each image gets its own label
 +    image: mariadb:latest # an example
 +    labels:
 +      - "com.centurylinklabs.watchtower.enable=false" # ADD THIS LINE
 +</code>
 +  * run watchtower immediately: ''docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once''
 +
 +===== Basic Operations =====
 +  * ''docker run'': run container
 +    * use the ''-d'' flag for "detach" i.e. run in background
 +    * use the ''-p'' flag to forward the port i.e. ''-p 9000:80'' maps port 80 in the container to 9000 on the host
 +    * user the ''--name'' flag to name the container (otherwise it's auto generated)
 +  * ''docker stop <ID>''
 +  * ''docker logs <ID>''
 +  * ''docker start <ID>'': restart a container
 +  * ''docker build <DIR_WHERE_Dockerfile_IS_LOCATED>'': build the image
 +    * ''-t'': add name and tag. Ex: ''docker build -t node-app:1.0 .''
 +
 +===== Docker Registry =====
 +  * Docker Hub is the default registry and it is the biggest public registry
 +  * you can store a private or public registry on Docker Hub
 +  * Each application gets its on repo in the registry
 +
 +===== creating a Dockerfile =====
 +  * All dockerfiles start with a parent image or "base image"
 +  * define the base image with ''FROM''
 +  * copy files into the container: ''COPY''
 +    * example: ''COPY package.json /app/''
 +  * set the working directory: ''WORKDIR''
 +    * example: ''WORKDIR /app''
 +  * next come the dependencies: ''RUN <dependencies here>''
 +    * example: ''RUN npm install''
 +  * for the last command in the docker file i.e. start the process: ''CMD''
 +    * example: ''CMD ["node", "server.js"]''
 +
  • lwc/docker.1769286890.txt.gz
  • Last modified: 2026/01/24 14:34
  • by John Harrison