Skip to content

Instantly share code, notes, and snippets.

@guiliredu
Last active March 12, 2020 18:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guiliredu/8b55220cc3b08ba0fbdada9707767806 to your computer and use it in GitHub Desktop.
Save guiliredu/8b55220cc3b08ba0fbdada9707767806 to your computer and use it in GitHub Desktop.
Docker - Basic Commands / Cheatsheet

Docker Snippets

MongoDB

  • Running: docker run -d -p 27017-27019:27017-27019 --name mongodb mongo:4.0.4
  • Bash: docker exec -it mongodb bash

MySQL

  • Running: docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=true -p 3306:3306 -v ~/Projects/Docker/mysql:/var/lib/mysql --name mysql mysql:5.7
  • Bash: docker exec -it mysql bash

Memcached

  • Running: docker run -d -p 11211:11211 --name memcached memcached -m 64
  • Bash: docker exec -it memcached bash
version: '3'
services:
app:
build:
context: ./docker/app
dockerfile: Dockerfile
image: shippingdocker/app:latest
networks:
- appnet
volumes:
- ./application:/var/www/html
working_dir: /var/www/html
cache:
image: redis:alpine
networks:
- appnet
volumes:
- cachedata:/data
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: homestead
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
networks:
- appnet
volumes:
- dbdata:/var/lib/mysql
networks:
appnet:
driver: bridge
volumes:
dbdata:
driver: local
cachedata:
driver: local

Docker - Basic Commands / Cheatsheet

  • docker run --rm -it -p 8080:80 ubuntu:latest bash

    • -v local:remote - Map a remote folder
    • -p 8080:80 - Map ports
    • --rm - Remove container after finish
    • -d - Run container in background
    • -it - Run container in interactive mode
    • --name=app - Set a name (hostname) to a container
    • ubuntu:latest - Image name to use
    • bash - Pass a command to the container
  • docker search nginx - Search an image

  • docker image ls - List local images

  • docker ps - List local running containers

  • docker ps -a - List all local containers

  • docker exec -it <container-id> <command> - Execute a command in a container with -it iteractive mode

  • docker exec -d <container-id> <command> - Execute a command in a container with -d background mode

  • docker build -t namespace/image:version -f Dockerfile . - Build an image, with the -t name, using -f Dockerfile and using . folder as base folder

  • docker diff <container-id> - Show diff between image and actual container

  • docker commit -a "John Doe" -m "App installed" <container-id> image:version

  • docker stop <container-id> - Stops a container

  • docker logs -f <container-id> - Show container logs, -f to follow log updates realtime

Networking

  • docker network ls - List networks
  • docker network create <network-name> - Create a new network
  • docker network inspect <network-name> - Inspect a given network
  • docker run -d --rm --network=<network-name> mysql:5.7 - Run container with specified network

Volumes

  • docker volume ls - List volumes
  • docker volume create <volume-name> - Create a new volume
  • docker run -d --rm -v <volume-name>:/var/www/volume ubuntu:latest - Run container with attached container

Docker Composer

  • docker-compose up -d - Run a container from a folder with docker-compose.yml file
  • docker-compose down -d - Kill a container
  • docker-compose exec <container> php artisan migrate - Execute a command inside a container

Tips

  • Run processes without daemon, to supervisord and docker track processes states
  • Docker Composer can read variables from .env files and use inside the yml with ${VARIABLE}

Source

FROM ubuntu:18.04
LABEL maintainer="John Doe"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
ADD default /etc/nginx/sites-available/default
CMD ["supervisord"]
ENTRYPOINT ["start-container.sh"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment