You are on page 1of 9
Docker cheatsheet: Commands, Help and Tips Docker Commands, Help & Tips Show commands & management commands Docker version info Show info like number of containers, etc WORKING WITH CONTAINERS Create an run a container in foreground Create an run a container in background Shorthand Naming Containers TIP: WHAT RUN DID Looked for image called nginx in image cache If not found in cache, it looks to the default image repo on Dockerhub Pulled it down (latest version), stored in the image cache Started it in a new container We specified to take port 80- on the host and forward to port 80 on the container We could do "$ docker container run --publish 8000:80 --detach nginx’ to use port 8000 We can specify versions like "nginx:1.0 List running containers oR List all containers (Even if not running) Stop container Stop all running containers Remove container (Can not remove running containers, must stop first) To remove a running container use force(-f) Remove multiple containers Remove all containers Get logs (Use name or ID) List processes running in container TIP: ABOUT CONTAINERS Docker containers are often compared to virtual machines but they are actually just processes running on your host os. In Windows/Mac, Docker runs in a mini-VM so to see the processes youll need to connect directly to that. On Linux however you can run "ps aux" and see the processes directly IMAGE COMMANDS List the images we have pulled We can also just pull down images Remove image Remove all images TIP: ABOUT IMAGES Images are app bianaries and dependencies with meta data about the image data and how to run the image Images are no a complete OS. No kernel, kernel modules (drivers) Host provides the kernel, big difference between VM Some sample container creation NGINX: APACHE: MONGODB: MYSQL: CONTAINER INFO View info on container Specific property (--format) Performance stats (cpu, mem, network, disk, etc) ACCESSING CONTAINERS Create new nginx container and bash into interactive Keep STDIN open if not attached tty - Open prompt For Git Bash, use " Run/Create Ubuntu container (no bash because ubuntu uses bash by default) You can also make it so when you exit the container does not stay by using the -rm flag Access an already created container, start with -ai Use exec to edit config, etc Alpine is a very small Linux distro good for docker (use sh because it does not include bash) (alpine uses apk for its package manager - can install bash if you want) NETWORKING “bridge” or "docker0" is the default network Get port List networks Inspect network Create network Create container on network Connect existing container to network Disconnect container from network Detach network from container IMAGE TAGGING & PUSHING TO DOCKERHUB tags are labels that point ot an image ID Youll see that each image has a tag Retag existing image Upload to dockerhub If denied, do Add tag to new image DOCKERFILE PARTS FROM - The os used, Common is alpine, debian, ubuntu ENV - Environment variables RUN - Run commands/shell scripts, ete EXPOSE - Ports to expose CMD - Final command run when you launch a new container from image WORKDIR - Sets working directory (also could use 'RUN cd /some/path’) COPY # Copies files from host to container Build image from dockerfile (reponame can be whatever) From the same directory as Dockerfile TIP: CACHE & ORDER Ifyou re-run the build, it will be quick because everythging is cached If you change one line and re-run, that line and everything after will not be cached Keep things that change the most toward the bottom of the Dockerfile EXTENDING DOCKERFILE Custom Dockerfile for html paqge with nginx Build image from Dockerfile Running it Tag and push to Dockerhub VOLUMES Volume - Makes special location outside of container UFS. Used for databases Bind Mount -Link container path to host path Check volumes Cleanup unused volumes Pull down mysql image to test Inspect and see volume Run container Inspect and see volume in container TIP: Mounts You will also see the volume under mounts Container gets its own unige location on the host to store that data Source: xxx is where it lives on the host Check volumes There is no way to tell volumes apart for instance with 2 mysql containers, so we used named volumes Named volumes (Add -v command)(the name here is mysql-db which could be anything) Inspect new named volume BIND MOUNTS Can not use in Dockerfile, specified at run time (uses -v as well) run -v /Users/brad/stuff/path/container (mac/linux) run -v //c/Users/brad/stuff/path/container (windows) TIP: Instead of typing out local path, for working directory use $(pwd):/path/container - On windows may not work unless you are in your users folder Run and be able to edit index.htm file (local dir should have the Dockerfile and the index.html) Go into the container and check You could create a file in the container and it will exiost on the host as well DOCKER COMPOSE Configure relationships between containers Save our docker container run settings in easy to read file 2 Parts: YAML File (docker.compose,yml) + CLI tool (docker-compose) 1. docker.compose.yml - Describes solutions for containers networks volumes 2. docker-compose CLI - used for local dev/test automation with YAML files Sample compose file (From Bret Fishers course) Torun You can run in background with To cleanup

You might also like