Compare commits

..

4 Commits

5 changed files with 194 additions and 3 deletions

View File

@ -1,4 +1,11 @@
# Summary
# SUMMARY
- [Home](./home.md)
- [Docker Talk](./dockertalk.md)
# General
- [Home](./general/home.md)
# Docker
- [Docker Talk](./docker/dockertalk.md)
- [Dockerfile Cheat Sheet](./docker/dockerfile.md)
- [Docker Compose Cheat Sheet](./docker/docker-compose.md)

View File

@ -0,0 +1,3 @@
# Dockerfile Cheat Sheet
Coming soon...

View File

@ -0,0 +1,181 @@
# Dockerfile Cheat Sheet
"Docker can build images automatically by reading the instructions from a `Dockerfile`. A `Dockerfile` is a text document that contains all the commands a user could call on the command line to assemble an image. This page describes the commands you can use in a `Dockerfile`." - Docker Docs
This is meant to be a quick and dirty reference to help you get started. Reference the docker docs if you need more information, they're linked in the sources below.
## Starting Point
Arguments that dictate what to use as a starting point for the dockerfile
### FROM
Specifies what image to use as a base
Usage:
```
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
```
Notes:
- **From is a required argument, and must come first**
- If no tag is specified, the "latest" tag will be used
## Metadata
Arguments that don't affect how the image builds or container runs, but give information about the image
### MAINTAINER (DEPRECATED)
Allows you to specify an author - REPLACED with `LABEL Author="foo"`
Usage:
```
LABEL Author="<name>"
# MAINTAINER <name>
```
### LABEL
Adds metadata to an image
Usage:
```
LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
```
## Setup
### ENV
Specifies environment variables
Usage:
```
ENV <env_var_name> <value>
```
### ADD
Copies files or directories to container's file system
Usage:
```
# ADD <host_src> <container_dest>
COPY <host_src> <container_dest>
```
Notes:
- ADD can be buggy, use COPY where you can
### COPY
Copies files or directories to container's file system
Usage:
```
COPY <host_src> <container_dest>
```
### VOLUME
Create mount point, marks as holding external mounted items
Usage:
```
VOLUME ["<DIR_PATH1>", "<DIR_PATH2>", ...]
```
### WORKDIR
Set the current working directory
Usage:
```
WORKDIR <DIR_PATH>
```
### SHELL
Command to change the shell that RUN uses
Usage:
```
SHELL ["<cmd>", "<arg1>", "<arg2>", ...]
```
Notes:
- Only changes shell for following RUN commands, you can switch between shells if you so desire
## Build
### RUN
Command to run in order to build the image
Usage:
```
RUN <cmd>
RUN ["<cmd>", "<arg1>", "<arg2>", ...]
```
Notes:
- The build will fail if a run command returns a non-zero code
- Runs with the "default shell" (can be changed with the SHELL command)
###
## Running
### EXPOSE
A way of communicating/documenting which image ports should be forwarded when ran as a container
```
EXPOSE 80
# ^ notes that tcp port 80 should be opened
EXPOSE 53/udp
# ^ Specifies udp on port 53
EXPOSE 53/tcp
EXPOSE 53/udp
# ^ Specifies both udp and tcp
```
Notes:
- Doesn't actually open the port, you'll need to add that to the docker-compose file or docker run (-p) command
### CMD
Marks the command to be run automatically when a container starts if none is manually marked at runtime
Usage:
```
CMD ["<executable>", "<arg1>", "<arg2>"]
CMD ["<arg1>", "<arg2>"]
CMD <command> <arg1> <arg2>
```
Notes:
- If you are also using ENTRYPOINT, you can use CMD to specify arguments only
### ENTRYPOINT
Marks the command to be run automatically when a container is run interactively, overrides CMD
Usage:
```
ENTRYPOINT ["<executable>", "<arg1>", "<arg2>"]
ENTRYPOINT <command> <arg1> <arg2>
```
# Sources
- [docs.docker.com](https://docs.docker.com/engine/reference/builder/)
- [kapeli.com](https://kapeli.com/cheat_sheets/Dockerfile.docset/Contents/Resources/Documents/index)
- [dockerlaps.collabnix.com](https://dockerlabs.collabnix.com/docker/cheatsheet/)