Docker usage

From wikinotes
Revision as of 16:26, 2 July 2022 by Will (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Common Workflow

# build image (if not exist)
[ ! -z $(docker images -q my_image) ] \
  || docker build -f Dockerfile -t my_image .

# build container
docker run \
  --name my_container \
  --rm \
  -ti \
  -v $(pwd):/app \
  <image> \
  /bin/bash

Images

# manage images
docker pull      <image>                      # clone image from dockerhub
docker images                                 # list docker images
docker rmi <image>                            # delete image by id/name (delete containers first `docker rm`)

# build images
docker build -t <image> .                     # build image from {PWD}/Dockerfile

# containers from images
docker run \                                  # create container from image
    --name foo \                              #   * named 'foo'
    --rm \                                    #   * deleted when stopped
    -ti \                                     #   * attach tty/stdin (for interactive shell)
    -v $(pwd):/app \                          #   * with `pwd` mounted at '/app'
    <image> \                                 # image id/name
    /bin/bash                                 # command in container

docker run <image> \                          # create container from image
    -d \                                      #   * as a daemon process
    /bin/bash -c 'while true; do echo "hi"; sleep 1;'

docker commit <name-or-hash>                  # create image from running system

Containers

# management
docker ps                            # list running containers
docker ps -a                         # list all containers
docker rm <container>                # delete container

docker run <image>                   # run command in new container
docker exec -ti <container> /bin/sh  # new shell in existing container

Managing Images/Containers

TODO:

recategorize, and delete

# maintaining images
docker images             # list images
docker rm <image>         # delete container/image
docker logs <image>       # stdout of docker image
docker stop <image>       # shutdown docker image
boot2docker ssh           # ssh into boot2docker VM layer (windows, osx)

# backup/restore
docker save <image> > file.tgz   # backup image
docker load <image> < file.tgz   # load backup image

Examples

See docker examples.