Docker: Difference between revisions

From Leo's Notes
This page was last edited on 20 July 2017, at 22:07.
No edit summary
Line 8: Line 8:




== Usage ==
== Usage Reference ==


{|
{|
Line 18: Line 18:
|-
|-
| {{code|docker pull}}
| {{code|docker pull}}
| Pulls a docker image from docker.io
| Pulls a docker image from a registry (can be from docker.io or a private registry)
* Version numbers can be given after a colon.
|-
|-
| {{code|docker run}}
| {{code|docker run}}
Line 44: Line 45:
| Removes a container. Use {{code|-rf}} to stop and remove.
| Removes a container. Use {{code|-rf}} to stop and remove.
|}
|}
== Creating an Image ==
To create an image:
* Create a directory containing any custom files
* Create a {{code|Dockerfile}} in the directory.
* Run {{code|docker build}} to build the image
=== Dockerfile ===
The docker file should a the minimum contain:
{{highlight|lang=text|code=
# The base image to use
FROM baseimage:version
# What to run when the image is started. This can contain any number of RUN or COPY commands
RUN yum install any-dependencies
# Expose any ports that are required
EXPOSE 80
# run the application
CMD ["python", "/some/app.py"]
}}
== Deploying an Application ==
Use Docker Swarm mode to deploy an application that relies on multiple services where each is a separate docker instance.
The swarm file lets you define each server that is part of the application.
See more at https://github.com/docker/labs/blob/master/beginner/chapters/votingapp.md
== Questions ==
* How are updates to the base image done? Does it automatically update containers relying on it? Or will containers need to be rebuilt again?
* How is data kept persistent? Does it need to be copied out/in everytime it is to be rebuilt?
* NFS access from the container?
* Domain trust - is it the same as a regular VM?
Could it be used for...
* dictd (probably easily)
* WebCat (swarm tomcat + MySQL?)
* ftp (Requires NFS)
* compute balancer
* firewall manager (swarm apache + MySQL)


== See Also ==
== See Also ==

Revision as of 22:07, 20 July 2017

Installation

Install docker using your package manager and then start the service.

To play with docker, you will need to run things as root or be part of a group that has access to docker's socket.

See more here: https://docs.docker.com/engine/installation/linux/linux-postinstall/


Usage Reference

Command Description
docker images Lists docker images that you created or pulled using docker pull
docker pull Pulls a docker image from a registry (can be from docker.io or a private registry)
  • Version numbers can be given after a colon.
docker run Runs a command in a container. Eg. docker run alpine ls -l
  • For commands that require an interactive shell, pass in -it.
  • Pass in --name for a custom name instead of a long hash
  • Pass environment vars using -e
  • Pass -d to detach immediately
  • Pass -P to specify the image
docker ps Lists containers that are running.

Pass -a to see all containers that executed.

docker port shows the port mapping between the container and the host.
docker stop Stop a container
docker kill ??
docker rm Removes a container. Use -rf to stop and remove.

Creating an Image

To create an image:

  • Create a directory containing any custom files
  • Create a Dockerfile in the directory.
  • Run docker build to build the image

Dockerfile

The docker file should a the minimum contain:

# The base image to use
FROM baseimage:version

# What to run when the image is started. This can contain any number of RUN or COPY commands
RUN yum install any-dependencies

# Expose any ports that are required
EXPOSE 80

# run the application
CMD ["python", "/some/app.py"]

Deploying an Application

Use Docker Swarm mode to deploy an application that relies on multiple services where each is a separate docker instance.

The swarm file lets you define each server that is part of the application.

See more at https://github.com/docker/labs/blob/master/beginner/chapters/votingapp.md

Questions

  • How are updates to the base image done? Does it automatically update containers relying on it? Or will containers need to be rebuilt again?
  • How is data kept persistent? Does it need to be copied out/in everytime it is to be rebuilt?
  • NFS access from the container?
  • Domain trust - is it the same as a regular VM?

Could it be used for...

  • dictd (probably easily)
  • WebCat (swarm tomcat + MySQL?)
  • ftp (Requires NFS)
  • compute balancer
  • firewall manager (swarm apache + MySQL)

See Also