-
-
Save dsaveliev/f9fc3cf7dc3d75c54dc2 to your computer and use it in GitHub Desktop.
Revisions
-
wsargent revised this gist
Mar 31, 2014 . 1 changed file with 6 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -67,6 +67,12 @@ $HOME/bin/boot2docker init $HOME/bin/boot2docker up ``` Pull the ubuntu repository: ``` docker pull ubuntu ``` Then start up a container: ``` -
wsargent revised this gist
Mar 9, 2014 . 1 changed file with 7 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -50,10 +50,16 @@ Install the docker daemon: curl -o docker https://get.docker.io/builds/Darwin/x86_64/docker-latest chmod +x docker export DOCKER_HOST=tcp://127.0.0.1:4243 sudo cp docker /usr/local/bin/ ``` If you have trouble with port numbers (4243 is taken on my machine): ``` echo "export DOCKER_HOST=tcp://127.0.0.1:9111" >> "$HOME/.zshenv" echo "DOCKER_PORT=9111" >> "$HOME/.boot2docker/profile" ``` Then start up the daemon: ``` -
wsargent revised this gist
Mar 9, 2014 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -38,6 +38,7 @@ Then we follow the instructions from [http://docs.docker.io/en/latest/installati Install boot2docker: ``` mkdir -p $HOME/bin cd $HOME/bin curl https://raw.github.com/boot2docker/boot2docker/master/boot2docker > $HOME/bin/boot2docker chmod +x $HOME/bin/boot2docker @@ -49,6 +50,7 @@ Install the docker daemon: curl -o docker https://get.docker.io/builds/Darwin/x86_64/docker-latest chmod +x docker export DOCKER_HOST=tcp://127.0.0.1:4243 echo "DOCKER_PORT=4243" > "$HOME/.boot2docker/profile" # if you have problems with port numbers sudo cp docker /usr/local/bin/ ``` -
wsargent revised this gist
Mar 3, 2014 . 1 changed file with 5 additions and 17 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -38,37 +38,25 @@ Then we follow the instructions from [http://docs.docker.io/en/latest/installati Install boot2docker: ``` cd $HOME/bin curl https://raw.github.com/boot2docker/boot2docker/master/boot2docker > $HOME/bin/boot2docker chmod +x $HOME/bin/boot2docker ``` Install the docker daemon: ``` curl -o docker https://get.docker.io/builds/Darwin/x86_64/docker-latest chmod +x docker export DOCKER_HOST=tcp://127.0.0.1:4243 sudo cp docker /usr/local/bin/ ``` Then start up the daemon: ``` $HOME/bin/boot2docker init $HOME/bin/boot2docker up ``` Then start up a container: -
wsargent revised this gist
Mar 3, 2014 . 1 changed file with 33 additions and 25 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -22,19 +22,9 @@ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" ## Installation UPDATE (2/5/2014): Docker 0.8 supports MacOS. Install VirtualBox and Vagrant using [Brew Cask](https://github.com/phinze/homebrew-cask). ``` brew tap phinze/homebrew-cask @@ -43,27 +33,45 @@ brew cask install virtualbox brew cask install vagrant ``` Then we follow the instructions from [http://docs.docker.io/en/latest/installation/mac/](http://docs.docker.io/en/latest/installation/mac/): Install boot2docker: ``` # Enter the installation directory cd ~/bin # Get the file curl https://raw.github.com/boot2docker/boot2docker/master/boot2docker > boot2docker # Mark it executable chmod +x boot2docker ``` Install the docker daemon: ``` # Get the file curl -o docker https://get.docker.io/builds/Darwin/x86_64/docker-latest # Mark it executable chmod +x docker # Set the environment variable for the docker daemon export DOCKER_HOST=tcp://127.0.0.1:4243 # Copy the executable file sudo cp docker /usr/local/bin/ ``` Then start up the daemon: ``` ./boot2docker init ./boot2docker up ``` Then start up a container: ``` docker run -i -t ubuntu /bin/bash -
wsargent revised this gist
Feb 5, 2014 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -22,6 +22,8 @@ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" ## Installation UPDATE (2/5/2014): Apparently Docker 0.8 supports MacOS (but the docs don't have any details on how to install it). Let me know what the right way is ([email protected]). UPDATE (1/14/2014): New fast way on MacOS as of 0.7.x using [dvm](http://fnichol.github.io/dvm/): ``` -
wsargent revised this gist
Feb 5, 2014 . 1 changed file with 4 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -117,8 +117,10 @@ If you want to expose container ports through the host, see the [exposing ports] ### Import / Export There doesn't seem to be a way to use docker directly to import files into a container's filesystem. * [`docker cp`](http://docs.docker.io/en/latest/commandline/cli/#cp) copies files or folders out of a container's filesystem. * [`docker export`](http://docs.docker.io/en/latest/commandline/cli/#export) turns container filesystem into tarball. ## Images -
wsargent revised this gist
Jan 15, 2014 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -69,6 +69,8 @@ docker run -i -t ubuntu /bin/bash That's it, you have a running Docker container. I use [Oh My Zsh](https://github.com/robbyrussell/oh-my-zsh) with the [Docker plugin](https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#docker) for autocompletion of docker commands. YMMV. ## Containers [Your basic isolated Docker process](http://docker.readthedocs.org/en/latest/terms/container/#container-def). Containers are to Virtual Machines as threads are to processes. Or you can think of them as chroots on steroids. -
wsargent revised this gist
Jan 15, 2014 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -22,7 +22,7 @@ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" ## Installation UPDATE (1/14/2014): New fast way on MacOS as of 0.7.x using [dvm](http://fnichol.github.io/dvm/): ``` brew tap fnichol/dvm; -
wsargent revised this gist
Jan 15, 2014 . 1 changed file with 11 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -22,7 +22,17 @@ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" ## Installation UPDATE (1/14/2014): New fast way on MacOS as of 0.7.x (possibly dangerous): ``` brew tap fnichol/dvm; brew install dvm docker; dvm up; eval $(dvm env); docker images; ``` Old reliable way: Install VirtualBox and Vagrant using [Brew Cask](https://github.com/phinze/homebrew-cask). ``` brew tap phinze/homebrew-cask -
wsargent revised this gist
Dec 13, 2013 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -10,6 +10,7 @@ * [A Docker Dev Environment in 24 Hours!](http://blog.relateiq.com/a-docker-dev-environment-in-24-hours-part-2-of-2/) * [Building a Development Environment With Docker](http://tersesystems.com/2013/11/20/building-a-development-environment-with-docker/) * [Discourse in a Docker Container](http://samsaffron.com/archive/2013/11/07/discourse-in-a-docker-container) ## Prequisites -
wsargent revised this gist
Dec 2, 2013 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -88,7 +88,7 @@ If you want to map a directory on the host to a docker container, `docker run -v If you want to integrate a container with a [host process manager](http://docs.docker.io/en/latest/use/host_integration/), start the daemon with `-r=false` then use `docker start -a`. If you want to expose container ports through the host, see the [exposing ports](https://gist.github.com/wsargent/7049221#exposing-ports) section. ### Info -
wsargent revised this gist
Dec 2, 2013 . 1 changed file with 3 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -194,9 +194,9 @@ You can mount them in several docker containers at once, using `docker run -volu See [advanced volumes](http://crosbymichael.com/advanced-docker-volumes.html) for more details. ## Exposing ports Exposing ports through the host container is [fiddly but doable](http://docs.docker.io/en/latest/use/port_redirection/#binding-a-port-to-an-host-interface). First expose the port in your Dockerfile: @@ -210,7 +210,7 @@ Then map the container port to the host port: docker run -p $HOSTPORT:$CONTAINERPORT -name CONTAINER -t someimage ``` If you're running Docker in Virtualbox, you then need to forward the port there as well. It can be useful to define something in Vagrantfile to expose a range of ports so that you can dynamically map them: ``` Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| -
wsargent revised this gist
Dec 2, 2013 . 1 changed file with 43 additions and 7 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -65,7 +65,7 @@ That's it, you have a running Docker container. Some common misconceptions it's worth correcting: * __Containers are not transient__. `docker run` doesn't do what you think. * __Containers are not limited to running a single command or process.__ You can use [supervisord](http://docs.docker.io/en/latest/examples/using_supervisord/) or [runit](https://github.com/phusion/baseimage-docker). ### Lifecycle @@ -80,13 +80,15 @@ Some common misconceptions it's worth correcting: If you want to run and then interact with a container, `docker start` then `docker attach` to get in. If you want a transient container, `docker run -rm` will remove the container after it stops. If you want to poke around in an image, `docker run -t -i <myshell>` to open a tty. If you want to map a directory on the host to a docker container, `docker run -v $HOSTDIR:$DOCKERDIR` (also see Volumes section). If you want to integrate a container with a [host process manager](http://docs.docker.io/en/latest/use/host_integration/), start the daemon with `-r=false` then use `docker start -a`. If you want to expose container ports through the host, look at the tips section at the end. ### Info @@ -192,6 +194,42 @@ You can mount them in several docker containers at once, using `docker run -volu See [advanced volumes](http://crosbymichael.com/advanced-docker-volumes.html) for more details. ## Port Redirection Exposing ports to the host container (aka [port redirection](http://docs.docker.io/en/latest/use/port_redirection/#port-redirection)) is a complicated pain. First expose the port in your Dockerfile: ``` EXPOSE <CONTAINERPORT> ``` Then map the container port to the host port: ``` docker run -p $HOSTPORT:$CONTAINERPORT -name CONTAINER -t someimage ``` It can be useful to define something in Vagrantfile to expose a range of ports so that you can dynamically map them: ``` Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ... (49000..49900).each do |port| config.vm.network :forwarded_port, :host => port, :guest => port end ... end ``` If you forget what you mapped the port to on the host container, use `docker port` to show it: ``` docker port CONTAINER $CONTAINERPORT ``` ## Tips Sources: @@ -252,5 +290,3 @@ docker rm `docker ps -a -q` docker images -viz | dot -Tpng -o docker.png ``` -
wsargent revised this gist
Dec 2, 2013 . 1 changed file with 15 additions and 9 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -65,7 +65,7 @@ That's it, you have a running Docker container. Some common misconceptions it's worth correcting: * __Containers are not transient__. `docker run` doesn't do what you think. * __Containers are not limited to running a single command or process.__ It's just encouraged. You can use [supervisord](http://docs.docker.io/en/latest/examples/using_supervisord/) or [runit](https://github.com/phusion/baseimage-docker). ### Lifecycle @@ -74,16 +74,19 @@ Some common misconceptions it's worth correcting: * [`docker start`](http://docs.docker.io/en/latest/commandline/cli/#start) will start it again. * [`docker restart`](http://docs.docker.io/en/latest/commandline/cli/#restart) restarts a container. * [`docker rm`](http://docs.docker.io/en/latest/commandline/cli/#rm) deletes a container. * [`docker kill`](http://docs.docker.io/en/latest/commandline/cli/#kill) sends a SIGKILL to a container. [Has issues](https://github.com/dotcloud/docker/issues/197). * [`docker attach`](http://docs.docker.io/en/latest/commandline/cli/#attach) will connect to a running container. * [`docker wait`](http://docs.docker.io/en/latest/commandline/cli/#wait) blocks until container stops. If you want to run and then interact with a container, `docker start` then `docker attach` to get in. If you truly want a transient container, `docker run -rm` will remove the container after it stops. If you just want to poke around in an image, `docker run -t -i <myshell>` to open a tty. If you just want to map a directory on the host to a docker container, `docker run -v $HOSTDIR:$DOCKERDIR`. If you want to integrate a container with a [host process manager](http://docs.docker.io/en/latest/use/host_integration/), start the server with `-r=false` then use `docker start -a`. ### Info @@ -93,6 +96,7 @@ If you just want to map a directory on the host to a docker container, `docker r * [`docker events`](http://docs.docker.io/en/latest/commandline/cli/#events) gets events from container. * [`docker port`](http://docs.docker.io/en/latest/commandline/cli/#port) shows public facing port of container. * [`docker top`](http://docs.docker.io/en/latest/commandline/cli/#top) shows running processes in container. * [`docker diff`](http://docs.docker.io/en/latest/commandline/cli/#diff) shows changed files in the container's FS. `docker ps -a` shows running and stopped containers. @@ -113,8 +117,8 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ * [`docker commit`](http://docs.docker.io/en/latest/commandline/cli/#commit) creates image from a container. * [`docker rmi`](http://docs.docker.io/en/latest/commandline/cli/#rmi) removes an image. * [`docker insert`](http://docs.docker.io/en/latest/commandline/cli/#insert) inserts a file from URL into image. (kind of odd, you'd think images would be immutable after create) * [`docker load`](http://docs.docker.io/en/latest/commandline/cli/#load) loads an image from a tar archive as STDIN, including images and tags (as of 0.7). * [`docker save`](http://docs.docker.io/en/latest/commandline/cli/#save) saves an image to a tar archive stream to STDOUT with all parent layers, tags & versions (as of 0.7). `docker import` and `docker commit` only set up the filesystem, not Dockerfile info like CMD or ENTRYPOINT or EXPOSE. See [bug](https://github.com/dotcloud/docker/issues/1141). @@ -138,7 +142,7 @@ Docker.io hosts its own [index](https://index.docker.io/) to a central registry ## Dockerfile [The configuration file](http://docs.docker.io/en/latest/use/builder/#dockerbuilder). Sets up a Docker container when you run `docker build` on it. Vastly preferable to `docker commit`. * [Dockerfile tutorial, level 1](http://www.docker.io/learn/dockerfile/level1/) * [Dockerfile tutorial, level 2](http://www.docker.io/learn/dockerfile/level2/) @@ -151,9 +155,11 @@ The [versioned filesystem](http://en.wikipedia.org/wiki/Aufs) in Docker is based ## Links Links are how Docker containers talk to each other [through TCP/IP ports](http://docs.docker.io/en/latest/use/working_with_links_names/). [Linking into Redis](http://docs.docker.io/en/latest/examples/linking_into_redis/) and [Atlassian](http://blogs.atlassian.com/2013/11/docker-all-the-things-at-atlassian-automation-and-wiring/) show worked examples. NOTE: If you want containers to ONLY communicate with each other through links, start the docker daemon with `-icc=false` to disable inter process communication. If you have a container with the name CONTAINER (specified by `docker run -name CONTAINER`) and in the Dockerfile, it has an exposed port: ``` EXPOSE 1337 @@ -178,7 +184,7 @@ To delete links, use `docker rm -link `. ## Volumes Docker volumes are [free-floating filesystems](http://docs.docker.io/en/latest/use/working_with_volumes/). They don't have to be connected to a particular container. Volumes are useful in situations where you can't use links (which are TCP/IP only). For instance, if you need to have two docker instances communicate by leaving stuff on the filesystem. -
wsargent revised this gist
Nov 27, 2013 . 1 changed file with 4 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -113,6 +113,8 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ * [`docker commit`](http://docs.docker.io/en/latest/commandline/cli/#commit) creates image from a container. * [`docker rmi`](http://docs.docker.io/en/latest/commandline/cli/#rmi) removes an image. * [`docker insert`](http://docs.docker.io/en/latest/commandline/cli/#insert) inserts a file from URL into image. (kind of odd, you'd think images would be immutable after create) * `docker load` loads an image from a tar archive as STDIN, including images and tags (as of 0.7). * `docker save` saves an image to a tar archive stream to STDOUT with all parent layers, tags & versions (as of 0.7). `docker import` and `docker commit` only set up the filesystem, not Dockerfile info like CMD or ENTRYPOINT or EXPOSE. See [bug](https://github.com/dotcloud/docker/issues/1141). @@ -172,6 +174,8 @@ $ALIAS_PORT_1337_TCP_ADDR And you can connect to it that way. To delete links, use `docker rm -link `. ## Volumes Docker volumes are free-floating filesystems. They don't have to be connected to a particular container. -
wsargent revised this gist
Nov 25, 2013 . 1 changed file with 4 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -184,6 +184,10 @@ See [advanced volumes](http://crosbymichael.com/advanced-docker-volumes.html) fo ## Tips Sources: * [15 Docker Tips in 5 minutes](http://sssslide.com/speakerdeck.com/bmorearty/15-docker-tips-in-5-minutes) ### Last Ids ``` -
wsargent revised this gist
Nov 23, 2013 . 1 changed file with 4 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -207,6 +207,10 @@ docker inspect `dl` | grep IPAddress | cut -d '"' -f 4 or ``` wget http://stedolan.github.io/jq/download/source/jq-1.3.tar.gz tar xzvf jq-1.3.tar.gz cd jq-1.3 ./configure && make && sudo make install docker inspect `dl` | jq -r '.[0].NetworkSettings.IPAddress' ``` -
wsargent revised this gist
Nov 23, 2013 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -224,7 +224,9 @@ docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm ### Delete stopped containers ``` docker rm `docker ps -a -q` ``` ### Show image dependencies -
wsargent revised this gist
Nov 23, 2013 . 1 changed file with 52 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -112,7 +112,7 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ * [`docker build`](http://docs.docker.io/en/latest/commandline/cli/#build) creates image from Dockerfile. * [`docker commit`](http://docs.docker.io/en/latest/commandline/cli/#commit) creates image from a container. * [`docker rmi`](http://docs.docker.io/en/latest/commandline/cli/#rmi) removes an image. * [`docker insert`](http://docs.docker.io/en/latest/commandline/cli/#insert) inserts a file from URL into image. (kind of odd, you'd think images would be immutable after create) `docker import` and `docker commit` only set up the filesystem, not Dockerfile info like CMD or ENTRYPOINT or EXPOSE. See [bug](https://github.com/dotcloud/docker/issues/1141). @@ -182,4 +182,55 @@ You can mount them in several docker containers at once, using `docker run -volu See [advanced volumes](http://crosbymichael.com/advanced-docker-volumes.html) for more details. ## Tips ### Last Ids ``` alias dl='docker ps -l -q' docker run ubuntu echo hello world docker commit `dl` helloworld ``` ### Commit with command (needs Dockerfile) ``` docker commit -run='{"Cmd":["postgres", "-too -many -opts"]}' `dl` postgres ``` ### Get IP address ``` docker inspect `dl` | grep IPAddress | cut -d '"' -f 4 ``` or ``` docker inspect `dl` | jq -r '.[0].NetworkSettings.IPAddress' ``` ### Get Environment Settings ``` docker run -rm ubuntu env ``` ### Delete old containers ``` docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm ``` ### Delete stopped containers docker rm `docker ps -a -q` ### Show image dependencies ``` docker images -viz | dot -Tpng -o docker.png ``` -
wsargent revised this gist
Nov 21, 2013 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -112,7 +112,7 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ * [`docker build`](http://docs.docker.io/en/latest/commandline/cli/#build) creates image from Dockerfile. * [`docker commit`](http://docs.docker.io/en/latest/commandline/cli/#commit) creates image from a container. * [`docker rmi`](http://docs.docker.io/en/latest/commandline/cli/#rmi) removes an image. * [`docker insert`](http://docs.docker.io/en/latest/commandline/cli/#insert) inserts a file from URL into image. (kind of odd, you'd think images would be immutable) `docker import` and `docker commit` only set up the filesystem, not Dockerfile info like CMD or ENTRYPOINT or EXPOSE. See [bug](https://github.com/dotcloud/docker/issues/1141). @@ -129,6 +129,7 @@ A registry is a *host* -- a server that stores repositories and provides an HTTP Docker.io hosts its own [index](https://index.docker.io/) to a central registry which contains a large number of repositories. * [`docker login`](http://docs.docker.io/en/latest/commandline/cli/#login) to login to a registry. * [`docker search`](http://docs.docker.io/en/latest/commandline/cli/#search) searches registry for image. * [`docker pull`](http://docs.docker.io/en/latest/commandline/cli/#pull) pulls an image from registry to local machine. * [`docker push`](http://docs.docker.io/en/latest/commandline/cli/#push) pushes an image to the registry from local machine. -
wsargent revised this gist
Nov 21, 2013 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -40,7 +40,7 @@ vagrant up vagrant ssh ``` In the VM: ``` sudo su - -
wsargent revised this gist
Nov 21, 2013 . 1 changed file with 4 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,11 +6,10 @@ > "Docker interests me because it allows simple environment isolation and repeatability. I can create a run-time environment once, package it up, then run it again on any other machine. Furthermore, everything that runs in that environment is isolated from the underlying host (much like a virtual machine). And best of all, everything is fast and simple." ## TL;DR, I just want a dev environment * [A Docker Dev Environment in 24 Hours!](http://blog.relateiq.com/a-docker-dev-environment-in-24-hours-part-2-of-2/) * [Building a Development Environment With Docker](http://tersesystems.com/2013/11/20/building-a-development-environment-with-docker/) ## Prequisites @@ -145,7 +144,7 @@ Best to look at [http://github.com/wsargent/docker-devenv](http://github.com/wsa ## Layers The [versioned filesystem](http://en.wikipedia.org/wiki/Aufs) in Docker is based on layers. They're like [git commits or changesets for filesystems](http://docker.readthedocs.org/en/latest/terms/layer/). ## Links -
wsargent revised this gist
Nov 21, 2013 . 1 changed file with 5 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -4,6 +4,8 @@ [Why Should I Care (For Developers)](https://www.docker.io/the_whole_story/#Why-Should-I-Care-\(For-Developers\)) > "Docker interests me because it allows simple environment isolation and repeatability. I can create a run-time environment once, package it up, then run it again on any other machine. Furthermore, everything that runs in that environment is isolated from the underlying host (much like a virtual machine). And best of all, everything is fast and simple." ## I don't care, I just want a dev environment * [https://github.com/relateiq/docker_public/](https://github.com/relateiq/docker_public/) @@ -34,7 +36,7 @@ We use the pre-built vagrant box: [http://blog.phusion.nl/2013/11/08/docker-frie ``` mkdir mydockerbox cd mydockerbox vagrant init docker https://oss-binaries.phusionpassenger.com/vagrant/boxes/ubuntu-12.04.3-amd64-vbox.box vagrant up vagrant ssh ``` @@ -68,8 +70,8 @@ Some common misconceptions it's worth correcting: ### Lifecycle * [`docker run`](http://docs.docker.io/en/latest/commandline/cli/#run) creates a container. * [`docker stop`](http://docs.docker.io/en/latest/commandline/cli/#stop) stops it. * [`docker start`](http://docs.docker.io/en/latest/commandline/cli/#start) will start it again. * [`docker restart`](http://docs.docker.io/en/latest/commandline/cli/#restart) restarts a container. * [`docker rm`](http://docs.docker.io/en/latest/commandline/cli/#rm) deletes a container. -
wsargent revised this gist
Nov 21, 2013 . 1 changed file with 0 additions and 179 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,179 +0,0 @@ -
wsargent revised this gist
Nov 21, 2013 . 1 changed file with 1 addition and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -2,9 +2,7 @@ ## Why [Why Should I Care (For Developers)](https://www.docker.io/the_whole_story/#Why-Should-I-Care-\(For-Developers\)) ## I don't care, I just want a dev environment -
wsargent revised this gist
Nov 21, 2013 . 1 changed file with 3 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -2,7 +2,9 @@ ## Why [Why Should I Care (For Developers)](https://www.docker.io/the_whole_story/#Why-Should-I-Care-\(For-Developers\)): > "Docker interests me because it allows simple environment isolation and repeatability. I can create a run-time environment once, package it up, then run it again on any other machine. Furthermore, everything that runs in that environment is isolated from the underlying host (much like a virtual machine). And best of all, everything is fast and simple." ## I don't care, I just want a dev environment -
wsargent revised this gist
Nov 21, 2013 . 1 changed file with 3 additions and 7 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -63,7 +63,7 @@ That's it, you have a running Docker container. Some common misconceptions it's worth correcting: * __Containers are not transient__. `docker run` doesn't do what you think. * __Containers are not limited to running a single command or process.__ It's just encouraged. ### Lifecycle @@ -82,6 +82,8 @@ If you truly want a transient container, `docker run -rm` will remove the contai If you just want to poke around in an image, `docker run -rm -t -i <myshell>` to open a tty. If you just want to map a directory on the host to a docker container, `docker run -v $HOSTDIR:$DOCKERDIR` ### Info * [`docker ps`](http://docs.docker.io/en/latest/commandline/cli/#ps) shows running containers. @@ -174,12 +176,6 @@ Docker volumes are free-floating filesystems. They don't have to be connected t Volumes are useful in situations where you can't use links (which are TCP/IP only). For instance, if you need to have two docker instances communicate by leaving stuff on the filesystem. You can mount them in several docker containers at once, using `docker run -volume-from` See [advanced volumes](http://crosbymichael.com/advanced-docker-volumes.html) for more details. -
wsargent revised this gist
Nov 20, 2013 . 1 changed file with 21 additions and 14 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -61,10 +61,10 @@ That's it, you have a running Docker container. [Your basic isolated Docker process](http://docker.readthedocs.org/en/latest/terms/container/#container-def). Containers are to Virtual Machines as threads are to processes. Or you can think of them as chroots on steroids. Some common misconceptions it's worth correcting: * __Containers are not transient__. `docker run` doesn't do what you think. If you * __Containers are not limited to running a single command or process.__ It's just encouraged. ### Lifecycle @@ -76,18 +76,23 @@ That's it, you have a running Docker container. * [`docker attach`](http://docs.docker.io/en/latest/commandline/cli/#attach) will connect to a running container. * [`docker wait`](http://docs.docker.io/en/latest/commandline/cli/#wait) blocks until container stops. If you want to run and then interact with a container, `docker start` then `docker attach` to get in. If you truly want a transient container, `docker run -rm` will remove the container after it stops. If you just want to poke around in an image, `docker run -rm -t -i <myshell>` to open a tty. ### Info * [`docker ps`](http://docs.docker.io/en/latest/commandline/cli/#ps) shows running containers. * [`docker inspect`](http://docs.docker.io/en/latest/commandline/cli/#inspect) looks at all the info on a container (including IP address). * [`docker logs`](http://docs.docker.io/en/latest/commandline/cli/#logs) gets logs from container. * [`docker events`](http://docs.docker.io/en/latest/commandline/cli/#events) gets events from container. * [`docker port`](http://docs.docker.io/en/latest/commandline/cli/#port) shows public facing port of container. * [`docker top`](http://docs.docker.io/en/latest/commandline/cli/#top) shows running processes in container. `docker ps -a` shows running and stopped containers. ### Import / Export * [`docker cp`](http://docs.docker.io/en/latest/commandline/cli/#cp) copies into a container. @@ -99,19 +104,19 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ ### Lifecycle * [`docker images`](http://docs.docker.io/en/latest/commandline/cli/#images) shows all images. * [`docker import`](http://docs.docker.io/en/latest/commandline/cli/#import) creates an image from a tarball. * [`docker build`](http://docs.docker.io/en/latest/commandline/cli/#build) creates image from Dockerfile. * [`docker commit`](http://docs.docker.io/en/latest/commandline/cli/#commit) creates image from a container. * [`docker rmi`](http://docs.docker.io/en/latest/commandline/cli/#rmi) removes an image. * [`docker insert`](http://docs.docker.io/en/latest/commandline/cli/#insert) inserts a file from URL into image. `docker import` and `docker commit` only set up the filesystem, not Dockerfile info like CMD or ENTRYPOINT or EXPOSE. See [bug](https://github.com/dotcloud/docker/issues/1141). ### Info * [`docker history`](http://docs.docker.io/en/latest/commandline/cli/#history) shows history of image. * [`docker tag`](http://docs.docker.io/en/latest/commandline/cli/#tag) tags an image to a name (local or registry). ## Registry & Repository @@ -121,16 +126,18 @@ A registry is a *host* -- a server that stores repositories and provides an HTTP Docker.io hosts its own [index](https://index.docker.io/) to a central registry which contains a large number of repositories. * [`docker search`](http://docs.docker.io/en/latest/commandline/cli/#search) searches registry for image. * [`docker pull`](http://docs.docker.io/en/latest/commandline/cli/#pull) pulls an image from registry to local machine. * [`docker push`](http://docs.docker.io/en/latest/commandline/cli/#push) pushes an image to the registry from local machine. ## Dockerfile The configuration file. Sets up a Docker container when you run `docker build` on it. Vastly preferable to `docker commit`. * [Dockerfile tutorial, level 1](http://www.docker.io/learn/dockerfile/level1/) * [Dockerfile tutorial, level 2](http://www.docker.io/learn/dockerfile/level2/) Best to look at [http://github.com/wsargent/docker-devenv](http://github.com/wsargent/docker-devenv) and the [best practices](http://crosbymichael.com/dockerfile-best-practices.html) for more details. ## Layers -
wsargent revised this gist
Nov 19, 2013 . 2 changed files with 12 additions and 21 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -20,7 +20,7 @@ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" ## Installation Install VirtualBox and Vagrant using [Brew Cask](https://github.com/phinze/homebrew-cask). ``` brew tap phinze/homebrew-cask @@ -59,14 +59,12 @@ That's it, you have a running Docker container. ## Containers [Your basic isolated Docker process](http://docker.readthedocs.org/en/latest/terms/container/#container-def). Containers are to Virtual Machines as threads are to processes. Or you can think of them as chroots on steroids. > Some common misconceptions it's worth correcting: > > * __Containers are not transient__. `docker run` doesn't do what you think. > * __Containers are not limited to running a single command or process.__ It's just encouraged. ### Lifecycle @@ -78,6 +76,8 @@ If you want to interact with a container, `docker ps -a` to see the list, then ` * [`docker attach`](http://docs.docker.io/en/latest/commandline/cli/#attach) will connect to a running container. * [`docker wait`](http://docs.docker.io/en/latest/commandline/cli/#wait) blocks until container stops. > If you want to interact with a container, `docker ps -a` to see the list, then `docker start` and `docker attach` to get in. ### Info * [`docker ps`](http://docs.docker.io/en/latest/commandline/cli/#ps) shows running containers. @@ -105,7 +105,7 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ * [`docker rmi`](http://docs.docker.io/en/latest/commandline/cli/#rmi) removes an image. * [`docker insert`](http://docs.docker.io/en/latest/commandline/cli/#insert) inserts a file from URL into image > `docker import` and `docker commit` only set up the filesystem, not Dockerfile info like CMD or ENTRYPOINT or EXPOSE. See [bug](https://github.com/dotcloud/docker/issues/1141). ### Info @@ -121,8 +121,6 @@ A registry is a *host* -- a server that stores repositories and provides an HTTP Docker.io hosts its own [index](https://index.docker.io/) to a central registry which contains a large number of repositories. * [`docker search`](http://docs.docker.io/en/latest/commandline/cli/#search) searches registry for image * [`docker pull`](http://docs.docker.io/en/latest/commandline/cli/#pull) pulls an image from registry to local machine * [`docker push`](http://docs.docker.io/en/latest/commandline/cli/#push) pushes an image to the registry from local machine. This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -18,7 +18,7 @@ The problem is that creating new containers is something that you'll do lots. E ### Use raw Dockerfile The way that Docker deals with this is to use a versioned file system, which identifies commands it can run from layers (aka cached fs) and pulls out the appropriate version. You want to keep the cache happy. You want to put all the mutable stuff at the very end of the Dockerfile, so you can leverage cache as much as possible. Chef recipes are a black box to Docker. The way this breaks down is: @@ -29,14 +29,7 @@ The way this breaks down is: There's another way to leverage Docker, and that's to use an image that doesn't start off from `ubuntu` or `basebox`. You can use your own base image. ## The Basics ### Install a internal docker registry @@ -183,4 +176,4 @@ docker run -i -t -volumes-from 5ad9f1d9d6dc mytag /bin/bash * [Phusion Base Image](https://github.com/phusion/baseimage-docker) * [Dockerfile Best Practices](http://crosbymichael.com/dockerfile-best-practices.html) * [How Mailgun uses Docker](http://www.rackspace.com/blog/how-mailgun-uses-docker-and-contributes-back/) (video is more complete than the blog post). * [Docker Dev Environment in 24 Hours](http://blog.relateiq.com/a-docker-dev-environment-in-24-hours-part-2-of-2/)
NewerOlder