If you're not familiar with Docker you might want to got through this lab. It has been tested with Docker engine v1.11, so you might see unexpected results with 1.12 and above.
Note that the commands shown below assume a bash shell, in other words this does not work on the Windows command line!
$ docker images
$ docker search ubuntu
$ docker search nginx
$ docker run --rm ubuntu:14.04 /bin/echo 'Hello world'
$ docker run --rm -it ubuntu:14.04 /bin/bash
$ echo 'Hello world'
$ exit
$ docker run -d -P --name my-nginx nginx
# list running containers
$ docker ps
# get container IP
$ NGINX_IP=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' my-nginx)
# visit container address
$ curl http://${NGINX_IP}
# stop and remove container
$ docker rm -f my-nginx
$ docker run -d --name my-ubuntu ubuntu:14.04 tail -f /dev/null
# Shell into running container
$ docker exec -it my-ubuntu /bin/bash
$ echo 'Hello world'
$ exit
# get the STDOUT & STDERR from the container
$ docker logs my-ubuntu
# get details about the running container
$ docker inspect my-ubuntu
# kill and remove container
$ docker rm -f my-ubuntu
$ mkdir -p demo/nginx
$ cd demo/nginx
# create a web page
$ echo "I just built my first Docker image \o/" > index.html
# create Dockerfile
$ cat > Dockerfile << EOF
FROM nginx
RUN apt-get update && apt-get install -y git
ADD index.html /usr/share/nginx/html/index.html
EOF
# log in to docker hub (not required for build, just getting username)
$ docker login
# get username
$ DOCKER_USER=$(docker info | grep Username | cut -d' ' -f2 | tee /dev/stderr)
# build docker image
$ docker build -t ${DOCKER_USER}/nginx-hello-world .
# publish image
$ docker push ${DOCKER_USER}/nginx-hello-world
# download published image
$ docker pull ${DOCKER_USER}/nginx-hello-world
When no image tag version is specified, latest
is used by default.
# tag latest image with a fixed version
$ docker tag ${DOCKER_USER}/nginx-hello-world:latest ${DOCKER_USER}/nginx-hello-world:1.0.0
# publish image
$ docker push ${DOCKER_USER}/nginx-hello-world:1.0.0
# download published image
$ docker pull ${DOCKER_USER}/nginx-hello-world:1.0.0
Visit your container page on DockerHub: https://hub.docker.com/r/${DOCKER_USER}/nginx-hello-world/
# force delete all containers
$ docker ps -q -a | xargs docker rm -f
# delete all unused images
$ docker images -f "dangling=true" -q | xargs docker rmi
Other, less destructive clean up options:
# delete all stopped containers
$ docker ps -a -q -f status=exited | xargs docker rm -v