Docker Training 3 - My First Docker Deployment
Lets recap where we are so far. We’ve gone over some of the basics of a Dockerfile. Talked a bit about some basic commands that will come in handy as we continue. Wrote a Dockerfile to build our little Golang API. Finally we have built an image and discussed tags.
So lets deploy this image and play with it a little bit. Open up a terminal and type this command.
Lets step through this command 1 piece at a time.
docker run: Here we are telling the Docker cli that we want to run an image as a container.
-publish: Publish will bind a local port to a port in the container.
127.0.0.1: Keeps us only exposing localhost, so our container won’t be available outside of our machine.
:8080: is the local port on our host machine that we are binding to
:10000: is the port inside the container that we want
8080 to impersonate.
/tcp: is the protocol we want to use. You could also use
sctp if needed. You can learn more about that in the User Guide
If you haven’t hit enter yet. Go ahead and hit it now and kick off that Docker run command.
You should see the following output.
Lets see if it works.
Open up a second terminal and enter:
Now we are cooking. But what else can we do with this little container.
Lets change the response from the curl request. We can do this by passing an environment variable into the container. We can do this one of two ways. We can edit the docker file. Add the ENV instruction. Tell it it we want
MESSAGE to equal something else. Rebuild our image. Then finally run it again. This is a great method for establishing default values for environment variables. Or we can add the parameter –env with a value to our
docker run command and change it on the fly. Environment Variables passed during a
docker run command will always trump what is in your Dockerfile. If you haven’t exited the container already hit
ctrl +c to exit the container from the terminal.
Lets run the following command:
Now in another terminal lets use that curl statement again.
Look at that. We changed the response with the environment variable.
Lets look at the docker exec command while our container is running. Docker exec allows us to run commands inside our container while its already running. This can be very handy for debugging a container. But first we have to figure out what our container is named.
Lets look at our running container with a command we covered in lesson 1:
You will get an output similar to this but your
NAMES field will not be the same.
Now that we have found our running container. Lets use the container name and execute a shell to get into our container.
Does that path look familiar? Its the same path we set for
WORKDIR in the Dockerfile. We are in the shell of the container. Type
exit and hit
enter to leave the container.
Lets look at the command real quick.
docker exec is the base command. This is declaring that we want to execute something against a running container.
--interactive will keep STDIN open even if we aren’t attached.
--tty gives us a pseudo tty.
hungry_bohr is the name of my running container. Yours will be different.
/bin/sh This is the command we want to run in the container. One caveat to this. Whatever you run against the container has to actually be part of the container. In an effort to trim containers down a lot of container images don’t have a shell command available.
So now, we’ve ran our container. We’ve exec’d into our container so that we can explore it. Thats it for this time. Get ready for next time when we have a brief exploration into the build context.