Docker Quick Reference
Contents
1. Docker concepts
Docker is a platform for developers and sysadmins to develop, deploy, and run applications with containers. The use of Linux containers to deploy applications is called containerization.
2. Containers and virtual machines
A container runs natively on Linux and shares the kernel of the host machine with other containers. It runs a discrete process, taking no more memory than any other executable, making it lightweight.
By contrast, a virtual machine (VM) runs a full-blown “guest” operating system with virtual access to host resources through a hypervisor. In general, VMs provide an environment with more resources than most applications need.
3. Commands - Run and Debug
docker run -d -v redis-vol:/data redis:alpine -prun containersdocker run -d -v redis-vol:/data redisdocker run --entrypoint /bin/bash -it nodeais:2.4.4docker run -it -v /root:/root nodeais:2.4.3 bashdocker exec -i 92a1 curl 127.0.0.1:9200debug go into shell without interrupt the main container, recommendationdocker exec -it 92a1 bashdocker attach 69d1attach will stop main process and return control heredocker logs --tail=100 -f mongodbto get debug logs
4. Commands - Image
docker pull library/elasticsearch:5.6to pull esdocker pull java:openjdk-8-jdkto pull javadocker imageslist imagesdocker image lsdocker image ls mongo --format "{{.ID}}"docker image rm *id*docker build -t plugins-scripts:v23 .build image
5. Commands - Container
docker container lsdocker container ls -ato include stooped onesdocker container rm *id*docker container pruneremove all stopped containersdocker psis a short cut fordocker container ls
6. Commands - Volumes
docker volume lsdocker volume create redis-voldocker run -d --name devtest --mount source=myvol2,target=/app nginx:latestdocker run -d --name devtest -v myvol2:/app nginx:latestdocker volume inspect my-voldocker volume rm my-voldocker run -d --name=nginxtest --mount source=nginx-vol,destination=/usr/share/nginx/html,readonly nginx:latestfor read onlydocker run -d --name=nginxtest -v nginx-vol:/usr/share/nginx/html:ro nginx:latestfor read onlydocker volume prunedelete all unused
7. Commands - Network
docker network create my-netbridgedocker network create --driver=bridge --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 --gateway=172.28.5.254 br0docker network create -d macvlan --subnet=172.16.86.0/24 --gateway=172.16.86.1 -o parent=eth0 pub_netmacvlandocker network rm my-netRemove networkdocker create --name my-nginx --network my-net --publish 8080:80 nginx:latestConnect by startingdocker network connect my-net my-nginxConnect while starteddocker network disconnect my-net my-nginxDisconnectdocker create --name my-nginx --network host --publish 8080:80 nginx:latestdocker network pruneall unused networks are removed
8. Commands - Format
printlnprint each linedocker inspect --format='{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}' containerdocker inspect -f '{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}'get IPupper:docker inspect --format "{{upper .Name}}" containertitle:docker inspect --format "{{title .Name}}" containersplit:docker inspect --format '{{split .Image ":"}}'lower:docker inspect --format "{{lower .Name}}" containerjson:docker inspect --format '{{json .Mounts}}' containerjoin:docker inspect --format '{{join .Args " , "}}' container
Sample:
docker inspect 7cb9995533cb | grep "IPAddress" .Service.ID Service ID .Service.Name Service name .Service.Labels Service labels .Node.ID Node ID .Node.Hostname Node Hostname .Task.ID Task ID .Task.Name Task name .Task.Slot Task slot
9. Commands Tags, Save and Export
(Seems modern docker can remember the tag)
docker image save b5435fede523 -o ./plugins-scrcips.2.3.0.180428.tardocker image load -i ./plugins-scrcips.2.3.0.180428.tardocker image tag b5435fede523 plugins-scripts:2.3.0docker image rmi plugins-scripts:2.3.0
10. Commands Others
docker system pruneremove all images, containers, and networks.docker run --rm -it --security-opt apparmor=docker-default hello-worldsecurity policydocker run -v /root:/root -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -it node:6.14.0 /bin/bashDisplay (For LibreOffice/Chrome/FF)LABEL "com.example.vendor"="ACME Incorporated"to add labelsbin/registry garbage-collect [--dry-run] /path/to/config.ymlgarbage collection
Comments !