Getting started with Docker
So you have docker installed (using my installer hopefully?), and you want to know how to begin.
This should get you started in creating your first Docker instance.
First off, let's install Docker.
Previously, I had posted my Docker installers, so we are going to use those for this exercise. I have broken out the instructions for both Mac and Debian-based when needed.
Installation (sudo required)
curl -s bman.io/i/install_dockermac|sudo bash
curl -s https://gist.githubusercontent.com/bhgraham/9dced0918dc20edd1484/raw/744e2f3ec355dc9a9310527c77234dbb2a192cde/install_dockermac | sudo bash
curl -s bman.io/i/install_dockerdeb|sudo bash
curl -s https://gist.githubusercontent.com/bhgraham/ed9f8242dc610b1f38e5/raw/58c162147be40c53a8a35b525e62dea86f49ebec/install_dockerdeb | sudo bash
To make use of common best practices, we are going to need to use revision control. We will need a directory to initialize a GIT repository. For our exercise we are going to use the project name,
mkdir exampledocker && cd exampledocker git init
Using your preferred editor (nano, vim, eg.), you need to create a file named
Dockerfile with the following contents:
FROM debian:stable MAINTAINER MyName <email@example.com> # Build dependencies RUN apt-get -y update # Install some common tools needed. RUN apt-get install -y -q curl git-core apt-utils sudo libwww-perl vim htop wget # Setup timezone, notice in this example, we # perform multiple operations within the same # RUN by ending the lines with \, this ensures # You create a single build step for this operation. RUN \ cp /usr/share/zoneinfo/America/Chicago /etc/localtime && \ echo "America/Chicago" > /etc/timezone; # Bash / sh link RUN ln -sf /bin/bash /bin/sh; # Say you want a file with predefines set, # like for a file in /etc, you can do it like so. RUN echo moo > /tmp/moo # When the container is run, which directory do # you want it dropped into? WORKDIR /opt/ # Now we are going to set the command executed when # the container is run. CMD ["/bin/bash"]
Save that file and then add it to git.
git add Dockerfile git commit -m "Initial Dockerfile commit"
Docker build and run
Now we will test out our Dockerfile by building it with the following command.
docker build -t exampledocker .
Next you will see a ton of output showing whats going on. It begins like so, but I won't show the guts of it.
Sending build context to Docker daemon 2.56 kB Sending build context to Docker daemon Step 0 : FROM debian:stable debian:stable: The image you are pulling has been verified 798202714a7c: Downloading 78.93 MB/90.17 MB 7s
Removing intermediate container 66a45bcf45ac Step 8 : CMD /bin/bash ---> Running in aa69d44c9867 ---> e885d8e03847 Removing intermediate container aa69d44c9867 Successfully built e885d8e03847
Now that it is built, let's check to be sure it exists with the
docker images command.
docker images exampledocker
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE exampledocker latest e885d8e03847 6 minutes ago 203.5 MB
As we have set the command and the directory at the end of the Dockerfile, running the next command should drop you into a bash shell in /opt.
docker run -i -t --rm exampledocker
-i is interactive,
-t allocates a pseudo-tty and
--rm removes the container when you exit. I would recommend using
--rm while you are still developing or else it gets messy fast.
The result should look like this:
At this point you have successfully created and run your first container using Docker. Just type
exit to quit the container and remove it.
Check to be sure the container ended with the
docker ps command. Just look for
docker ps -a | grep dockerexample
That's it. You have now successfully created and run a docker container on your local machine.
I will be writing a future article and going in depth on collaboration with Docker and using the Docker Hub. Having it in GIT from the start helps. As always, if you have any questions or comments, drop them on the post comments.
If you need any other help you may want to use
man or check here: