list all docker running containers:
docker ps
list all docker containers running and stopped:
docker ps -a
list all docker images:
docker images
stop all containers (Brute Force):
docker kill $(docker ps -q)
stop all containers (Smooth Method):
docker stop $(docker ps -a -q)
remove all containers:
docker rm $(docker ps -a -q)
remove all docker images:
docker rmi $(docker images -q)
log into a container:
docker exec -ti <container's hash> /bin/bash
log into a container as root:
docker exec -it --user root <container's hash> /bin/bash
copy files from/to a container:
docker cp <container_hash>:/destination/path .
docker cp <files_to_copy> <container_hash>:/destination/path
docker-compose build
docker-compose up
FROM
defines the image in which the image will be based on.
it is the first command declared in a dockerfile.
it will take the image from host computer or from DockerHub
:
# Usage: FROM [image name]
FROM ubuntu
MAINTAINER
credits of creator or maintainer:
# Usage: MAINTAINER [name]
MAINTAINER authors_name
ADD
places files in a docker image, taking it from host computer or from url:
# Usage: ADD [source directory or URL] [destination directory]
ADD /my_app_folder /my_app_folder
RUN
runs a command at the moment of building an image.
used to install dependencies:
# Usage: RUN [command]
RUN aptitude install -y riak
CMD
runs a command at the moment of initiating a container:
# Usage 1: CMD application "argument", "argument", ..
CMD "echo" "Hello docker!"
ENTRYPOINT
defines the application in which the commands specified buy CMD
:
# Usage: ENTRYPOINT application "argument", "argument", ..
# Remember: arguments are optional. They can be provided by CMD
# or during the creation of a container.
ENTRYPOINT echo
# Usage example with CMD:
# Arguments set with CMD can be overridden during *run*
CMD "Hello docker!"
ENTRYPOINT echo
ENV
sets an environment variables in key = value
pair:
# Usage: ENV key value
ENV SERVER_WORKS 4
EXPOSE
defines port to communicate to another container:
# Usage: EXPOSE [port]
EXPOSE 8080
USER
specifies uid
or username
that will run the container:
# Usage: USER [UID]
USER 751
VOLUME
allows access from container to host computer:
# Usage: VOLUME ["/dir_1", "/dir_2" ..]
VOLUME ["/my_files"]
WORKDIR
specifies in which folder CMD
commands should be executed:
# Usage: WORKDIR /path
WORKDIR ~/
Example dockerfile
Dockerfile to run a flask app called flask-docker.py
will look like:
FROM ubuntu:latest
MAINTAINER developer "[email protected]"
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
ADD flask-app /flask-app
WORKDIR /flask-app
RUN pip install -r requirements.txt
ENTRYPOINT ["python"]
CMD ["flask-docker.py"]
Build the Docker Image:
https://docs.docker.com/engine/reference/commandline/build/
To create the image just run:
docker build -t image_name:latest .
Run the Docker Image:
https://docs.docker.com/engine/reference/commandline/run/
docker run -d -p <host's port>:<container's port> image_name