Complete Docker CLIContainer Management CLIsInspecting The ContainerInteracting with ContainerImage Management CommandsImage Transfer CommandsBuilder Main CommandsThe Docker CLIManage imagesdocker builddocker build [options] .
-t "app/container_name" # name
Create an image from a Dockerfile. docker run
docker run [options] IMAGE
# see `docker create` for options
Run a command in an image . Manage containersdocker createdocker create [options] IMAGE
-a, --attach # attach stdout/err
-i, --interactive # attach stdin (interactive)
-t, --tty # pseudo-tty
--name NAME # name your image
-p, --publish 5000:5000 # port map
--expose 5432 # expose a port to linked containers
-P, --publish-all # publish all ports
--link container:alias # linking
-v, --volume `pwd`:/app # mount (absolute paths needed)
-e, --env NAME=hello # env vars
Example$ docker create --name app_redis_1 \
--expose 6379 \
redis:3.0.2
Create a container from an image . docker execdocker exec [options] CONTAINER COMMAND
-d, --detach # run in background
-i, --interactive # stdin
-t, --tty # interactive
Example$ docker exec app_web_1 tail logs/development.log
$ docker exec -t -i app_web_1 rails c
Run commands in a container . docker startdocker start [options] CONTAINER
-a, --attach # attach stdout/err
-i, --interactive # attach stdin
docker stop [options] CONTAINER
Start/stop a container . docker ps
$ docker ps
$ docker ps -a
$ docker kill $ID
Manage container s using ps/kill. Imagesdocker images$ docker images
REPOSITORY TAG ID
ubuntu 12.10 b750fe78269d
me/myapp latest 7b2431a8d968
$ docker images -a # also show intermediate
Manages
image s. docker rmi
Deletes image s. Also see- Getting Started (docker.io)
DockerfileInheritanceVariablesENV APP_HOME /myapp
RUN mkdir $APP_HOME
InitializationVOLUME ["/data"]
# Specification for mount point
ADD file.xyz /file.xyz
COPY --chown=user:group host_file.xyz /path/container_file.xyz
OnbuildONBUILD RUN bundle install
# when used with another file
Commands
EXPOSE 5900
CMD ["bundle", "exec", "rails", "server"]
EntrypointENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2
Configures a container that will run as an executable. This will use shell processing to substitute shell variables, and will ignore any CMD or docker run command line arguments. MetadataLABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL description="This text illustrates \
that label-values can span multiple lines."
See also- https://docs.docker.com/engine/reference/builder/
docker-composeBasic example# docker-compose.yml
version: '2'
services:
web:
build: .
# build from Dockerfile
context: ./Path
dockerfile: Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: redis
Commandsdocker-compose start
docker-compose stop
docker-compose pause
docker-compose unpause
docker-compose ps
docker-compose up
docker-compose down
ReferenceBuildingweb:
# build from Dockerfile
build: .
# build from custom Dockerfile
build:
context: ./dir
dockerfile: Dockerfile.dev
# build from image
image: ubuntu
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry:4000/postgresql
image: a4bc65fd
Ports ports:
- "3000"
- "8000:80" # guest:host
# expose ports to linked services (not to host)
expose: ["3000"]
Commands # command to execute
command: bundle exec thin -p 3000
command: [bundle, exec, thin, -p, 3000]
# override the entrypoint
entrypoint: /app/start.sh
entrypoint: [php, -d, vendor/bin/phpunit]
Environment variables
# environment vars
environment:
RACK_ENV: development
environment:
- RACK_ENV=development
# environment vars from file
env_file: .env
env_file: [.env, .development.env]
Dependencies # makes the `db` service available as the hostname `database`
# (implies depends_on)
links:
- db:database
- redis
# make sure `db` is alive before starting
depends_on:
- db
Other options # make this service extend another
extends:
file: common.yml # optional
service: webapp
volumes:
- /var/lib/mysql
- ./_data:/var/lib/mysql
Advanced featuresLabelsservices:
web:
labels:
com.example.description: "Accounting web app"
DNS serversservices:
web:
dns: 8.8.8.8
dns:
- 8.8.8.8
- 8.8.4.4
Devicesservices:
web:
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
External linksservices:
web:
external_links:
- redis_1
- project_db_1:mysql
Hostsservices:
web:
extra_hosts:
- "somehost:192.168.1.100"
sevicesTo view list of all the services runnning in swarm To see all running services docker stack services stack_name
to see all services logs docker service logs stack_name service_name
To scale services quickly across qualified node docker service scale stack_name_service_name=replicas
clean upTo clean or prune unused (dangling) images To remove all images which are not in use containers , add - a To prune your entire system To leave swarm To remove swarm ( deletes all volume
data and database info) docker stack rm stack_name
To kill all running containers docker kill $(docekr ps -q )
Contributor -Sangam biradar - Docker Community Leader
What is a docker cheat sheet?
Docker Commands Cheat Sheet. List all the Running Containers.. List all the Containers (irrespective of the state). List all the Running Containers with the File Size.. List the IDs of the Running Containers.. List the IDs of all the Containers (irrespective of the state). Filter container list..
What are the basic commands for Docker?
Basic Docker Commands. docker - version.. docker pull.. docker run.. docker ps.. docker exec.. docker stop.. docker restart.. docker kill..
Is learning Docker easy?
Docker is an advanced tool that makes the development, distribution, and deployment of applications faster and smoother. A beginner with a good grip on the Linux operating system can start with Docker. However, intermediate and advanced level requires an in-depth understanding of different Linux platforms.
What is TTY mode Docker?
The -t (or --tty) flag tells Docker to allocate a virtual terminal session within the container. This is commonly used with the -i (or --interactive) option, which keeps STDIN open even if running in detached mode (more about that later).
|