-
-
Save domyounglee/d8b90e856a15bdafc73d0d20bc0ddba3 to your computer and use it in GitHub Desktop.
Revisions
-
nacyot revised this gist
Apr 28, 2019 . 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 @@ -1,8 +1,10 @@ # Docker 치트 시트 * 한국어 번역(초벌): [nacyot](http://nacyot.com) * 같이 읽으면 좋은 문서들 * [도커(Docker) 튜토리얼 : 깐 김에 배포까지](https://www.44bits.io/ko/post/easy-deploy-with-docker) * [왜 굳이 도커(컨테이너)를 써야 하나요? - 컨테이너를 사용해야 하는 이유](https://www.44bits.io/ko/post/why-should-i-use-docker-container) * [초보를 위한 도커 안내서 - 도커란 무엇인가?](https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html) ## 왜 Docker를 사용해야하는가? -
nacyot revised this gist
Apr 28, 2019 . 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 @@ -1,6 +1,8 @@ # Docker 치트 시트 * 한국어 번역(초벌): [nacyot](http://nacyot.com) * [도커(Docker) 튜토리얼 : 깐 김에 배포까지](https://www.44bits.io/ko/post/easy-deploy-with-docker) * [왜 굳이 도커(컨테이너)를 써야 하나요? - 컨테이너를 사용해야 하는 이유](https://www.44bits.io/ko/post/why-should-i-use-docker-container) ## 왜 Docker를 사용해야하는가? -
nacyot revised this gist
May 19, 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 @@ -1,5 +1,7 @@ # Docker 치트 시트 한국어 번역(초벌) : [nacyot](http://nacyot.com) ## 왜 Docker를 사용해야하는가? [Why Should I Care (For Developers)](https://www.docker.io/the_whole_story/#Why-Should-I-Care-\(For-Developers\)) -
nacyot revised this gist
Jan 30, 2014 . No changes.There are no files selected for viewing
-
nacyot revised this gist
Jan 24, 2014 . No changes.There are no files selected for viewing
-
nacyot revised this gist
Jan 12, 2014 . 1 changed file with 101 additions and 103 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,28 +1,28 @@ # Docker 치트 시트 ## 왜 Docker를 사용해야하는가? [Why Should I Care (For Developers)](https://www.docker.io/the_whole_story/#Why-Should-I-Care-\(For-Developers\)) > "나에게 Docker의 매력은 간단히 격리된 환경을 만들 수 있다는 것과, 그러한 환경을 재사용할 수 있다는 점이다."런타임 환경을 한 번 만들어 패키지로 만들면, 이 패키지를 다른 어떤 머신에서도 다시 사용할 수 있다. 또한 여기서 실행되는 모든 것은 마치 가상머신과 같이 호스트로부터 격리되어있다. 무엇보다도 이런 모든 일들이 빠르고 간단히 가능하다. ## TL;DR, 지금 바로 Docker 개발 환경 구축하기 * [24시간 동안 Docker 개발 한경 구축하기(A Docker Dev Environment in 24 Hours!)](http://blog.relateiq.com/a-docker-dev-environment-in-24-hours-part-2-of-2/) * [(Docker와 함께 개발환경 구축하기)Building a Development Environment With Docker](http://tersesystems.com/2013/11/20/building-a-development-environment-with-docker/) * [Docker 컨테이너에 대한 이야기(Discourse in a Docker Container)](http://samsaffron.com/archive/2013/11/07/discourse-in-a-docker-container) ## 필요한 것들 [Homebrew](http://brew.sh/) 설치. ``` ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" ``` ## 설치 [Brew Cask](https://github.com/phinze/homebrew-cask)를 사용해 VirtualBox와 Vagrant 설치. ``` brew tap phinze/homebrew-cask @@ -31,7 +31,7 @@ brew cask install virtualbox brew cask install vagrant ``` 여기서는 미리 준비한 vagrant 박스를 사용한다: [http://blog.phusion.nl/2013/11/08/docker-friendly-vagrant-boxes/](http://blog.phusion.nl/2013/11/08/docker-friendly-vagrant-boxes/) ``` mkdir mydockerbox @@ -41,7 +41,7 @@ vagrant up vagrant ssh ``` 가상 머신 내부에서: ``` sudo su - @@ -51,167 +51,165 @@ apt-get update apt-get install -y lxc-docker ``` 제대로 작동하는 지 확인: ``` docker run -i -t ubuntu /bin/bash ``` 설치는 이게 전부다. 마지막 명령어를 통해 Docker 컨테이너 하나가 실행되었다. ## 컨테이너 [Your basic isolated Docker process](http://docker.readthedocs.org/en/latest/terms/container/#container-def). 컨테이너와 가상 머신 간의 관계는 쓰레드와 프로세스 간의 관계와 비슷하다. 아니면 스테로이드 주사를 맞은 chroot라고도 생각할 수 있다. 몇 가지 오해가 있다면: * __컨테이너는 일시적으로 작동하지 않는다__. `docker run`은 당신이 얼핏 예상하는 그런 식으로 작동하지 않는다. * __컨테이너에서 오직 하나의 명령어나 커맨드만 실행시킨다는 것은 잘못된 생각이다.__ [supervisord](http://docs.docker.io/en/latest/examples/using_supervisord/)나 [runit](https://github.com/phusion/baseimage-docker)를 사용할 수 있다.. ### 라이프 사이클 * [`docker run`](http://docs.docker.io/en/latest/commandline/cli/#run) 컨테이너를 생성한다. * [`docker stop`](http://docs.docker.io/en/latest/commandline/cli/#stop) 컨테이너를 정지시킨다. * [`docker start`](http://docs.docker.io/en/latest/commandline/cli/#start) 컨테이너를 다시 실행시킨다. * [`docker restart`](http://docs.docker.io/en/latest/commandline/cli/#restart) 컨테이너를 재가동한다. * [`docker rm`](http://docs.docker.io/en/latest/commandline/cli/#rm) 컨테이너를 삭제한다. * [`docker kill`](http://docs.docker.io/en/latest/commandline/cli/#kill) 컨테이너에게 SIGKILL을 보낸다. [이에 관련된 이슈가 있다.](https://github.com/dotcloud/docker/issues/197). * [`docker attach`](http://docs.docker.io/en/latest/commandline/cli/#attach) 실행중인 컨테이너에 접속한다. * [`docker wait`](http://docs.docker.io/en/latest/commandline/cli/#wait) 컨테이너가 멈출 때까지 블럭한다. 컨테이너를 실행하고 컨테이너에 접속하고자 할 때는 `docker start` 명령어를 실행하고 `docker attach` 명령어를 실행한다. 일시적인 컨테이너를 생성하고자 할 때는 `docker run -rm` 명렁어를 사용해 컨테이너를 생성할 수 있다. 이 컨테이너는 멈춰지면 삭제된다. 이미지 안을 뒤질 필요가 있을 때는 `docker run -t -i <myshell>` 명령어로 tty를 열 수 있다. 호스트의 디렉토리와 Docker 컨테이너 디렉토리를 맵핑하고자 할 때는 `docker run -v $HOSTDIR:$DOCKERDIR` 명령어를 사용할 수 있다(also see Volumes section). 컨테이너를 [host process manager](http://docs.docker.io/en/latest/use/host_integration/)와 통합하고자 할 때는 Dockre 데몬을`-r=false` 옵션으로 실행시키고 `docker start -a` 명령어를 실행하면 된다. 컨테이너의 포트를 호스트 쪽으로 열어 주고자 할 때는 [exposing ports](https://gist.github.com/wsargent/7049221#exposing-ports)을 참조하면 된다. ### 관련된 정보를 출력해주는 명령어 * [`docker ps`](http://docs.docker.io/en/latest/commandline/cli/#ps) 명령어는 실행중인 컨테이너 목록을 보여준다. * [`docker inspect`](http://docs.docker.io/en/latest/commandline/cli/#inspect) ip 주소를 포함한 특정 컨테이너에 대한 모든 정보를 보여준다. * [`docker logs`](http://docs.docker.io/en/latest/commandline/cli/#logs) 컨테이너로부터 로그를 가져온다. * [`docker events`](http://docs.docker.io/en/latest/commandline/cli/#events) 컨테이너로부터 이벤트를 가져온다. * [`docker port`](http://docs.docker.io/en/latest/commandline/cli/#port) 컨테이너의 특정 포트가 어디로 연결되어있는지 보여준다. * [`docker top`](http://docs.docker.io/en/latest/commandline/cli/#top) 컨테이너에서 실행중인 프로세스를 보여준다. * [`docker diff`](http://docs.docker.io/en/latest/commandline/cli/#diff) 컨테이너 파일 시스템에서 변경된 파일들을 보여준다. `docker ps -a` 실행중인 컨테이너와 멈춰있는 컨테이너를 모두 보여준다. ### Import / Export * [`docker cp`](http://docs.docker.io/en/latest/commandline/cli/#cp) 컨테이너 내의 파일을 호스트로 복사한다. * [`docker export`](http://docs.docker.io/en/latest/commandline/cli/#export) 컨테이너 파일 시스템을 tarball로 출력한다. ## Docker 이미지 이미지는 그저 [Docker 컨테이너의 템플릿](http://docker.readthedocs.org/en/latest/terms/image/)이다. ### 라이프 사이클 * [`docker images`](http://docs.docker.io/en/latest/commandline/cli/#images) 모든 이미지 목록을 보여준다. * [`docker import`](http://docs.docker.io/en/latest/commandline/cli/#import) tarball 파일로부터 이미지를 생성한다. * [`docker build`](http://docs.docker.io/en/latest/commandline/cli/#build) Dockerfile을 통해 이미지를 생성한다. * [`docker commit`](http://docs.docker.io/en/latest/commandline/cli/#commit) 컨테이너에서 이미지를 생성한다. * [`docker rmi`](http://docs.docker.io/en/latest/commandline/cli/#rmi) 이미지를 삭제한다. * [`docker insert`](http://docs.docker.io/en/latest/commandline/cli/#insert) URL에서 이미지로 파일을 집어넣는다. * [`docker load`](http://docs.docker.io/en/latest/commandline/cli/#load) 표준 입력으로 tar 파일에서 (이미지와 태그를 포함한) 이미지를 불러온다.(0.7부터 사용가능). * [`docker save`](http://docs.docker.io/en/latest/commandline/cli/#save) 모든 부모 레이어와 태그, 버전 정보를 tar 형식으로 표준출력을 통해 @@@ (0.7부터 사용가능). `docker import`와 `docker commit` 파일 시스템만 셋업하고 Dockefile과 같은 CMD, ENTRYPOINT, EXPOSE는 포함하지 않는다.. [bug](https://github.com/dotcloud/docker/issues/1141) 참조. ### 관련된 정보를 출력해주는 명령어 * [`docker history`](http://docs.docker.io/en/latest/commandline/cli/#history) 이미지의 이력 정보를 보여준다. * [`docker tag`](http://docs.docker.io/en/latest/commandline/cli/#tag) 이미지에 이름으로 태그를 붙여준다(local 혹은 registry). ## 레지스트리(Registry) & 저장소(Repository) 저장소(repository)란 컨테이너를 위한 파일 시스템을 생성할 수 있는 호스트되는 태그가 붙어있는 이미지들의 집합. 레지스트리란 저장소를 저장해두고 HTTP API를 통해 [저장소의 업로드, 관리, 다운로드]()를 제공하는 호스트를 의미한다. @@@ Docker.io는 매우 다양한 저장소를 포함하고 있는 이미지 [index]를 가지고 있는 중앙 레지스트리이다. @@@ * [`docker login`]() 레지스트리에 로그인한다. * [`docker search`](http://docs.docker.io/en/latest/commandline/cli/#search) 레지스트리에서 이미지를 검색한다. * [`docker pull`](http://docs.docker.io/en/latest/commandline/cli/#pull) 이미지를 레지스트리에서 로컬 머신으로 가져온다(pull). * [`docker push`](http://docs.docker.io/en/latest/commandline/cli/#push) 이미지를 로컬 머신에서 레지스트리에 집어넣는다(push). ## Dockerfile [Docker 설정 파일](http://docs.docker.io/en/latest/use/builder/#dockerbuilder). `docker build` 명령어를 통해서 Docker 컨테이너를 만들어낸다. 또한 `docker commit` 명령어보다 추천되는 명령어이다. * [Dockerfile tutorial, level 1](http://www.docker.io/learn/dockerfile/level1/) * [Dockerfile tutorial, level 2](http://www.docker.io/learn/dockerfile/level2/) [http://github.com/wsargent/docker-devenv](http://github.com/wsargent/docker-devenv)를 추천한다. 더 자세한 내용은 [best practices](http://crosbymichael.com/dockerfile-best-practices.html) 이 글을 추천한다. ## 레이어 Docker에서 [버전화된 파일 시스템은](http://en.wikipedia.org/wiki/Aufs) 레이어에 기반하고 있다.. 이는 [파일 시스템을 위한 git commits나 차분](http://docker.readthedocs.org/en/latest/terms/layer/)이라고 생각할 수 있다. ## 링크 Docker 컨테이너들이 [TCP/IP ports](http://docs.docker.io/en/latest/use/working_with_links_names/)으로 링크를 통해 서로 정보를 주고받는다.. [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/)에서는 어떻게 작동되는지 예제를 보여준다. 참고 : 만약 컨테이너들 간에 오직 링크를 통해서만 통신을 허용하고 싶다면 Docker 데몬을 실행할 때 `icc=false` 옵션을 통해 프로세스간 통신을 막을 수 있다. 예를 들어 CONTAINER이라는 이름을 가진 컨테이너가 있다고 하자(`docker run -name CONTAINER`). 이 컨테이너는 Dockerfile에서 port를 아래와 같이 노출시킨다. ``` EXPOSE 1337 ``` 그리고 다음과 같이 LINKED라고 이름붙여진 또 다른 컨테이너를 만든다. ``` docker run -d -link CONTAINER:ALIAS -name LINKED user/wordpress ``` 노출된 포트와 CONTAINER의 별칭이 아래와 같이 LINKED 컨테이너의 환경변수로 나타난다: ``` $ALIAS_PORT_1337_TCP_PORT $ALIAS_PORT_1337_TCP_ADDR ``` 이를 통해 연결할 수 있다. 이 링크를 삭제하려면 `docker rm -link` 명령어를 사용하면 된다. ## 볼륨 Docker의 볼륨은 [유동적인 파일시스템](http://docs.docker.io/en/latest/use/working_with_volumes/)이다. 볼륨은 특정 컨테이너에 연결되어있지 않아도 된다. 볼륨은 TCP/IP를 통한 링크가 사용가능한 환경에서 유용하다. 예를 들어 두 Docker 인스턴스에서 파일 시스템으로부터 떨어져서 통신을 해야하는 경우가 있다. 먼저 이것들을 docker 컨테이너에 동시에 마운트 하고 `docker run -volume-from` 명령어를 실행합니다. 더 자세한 사항은 [advanced volumes](http://crosbymichael.com/advanced-docker-volumes.html) 페이지를 참고해주세요. ## 포트 노출하기 포트를 노출시키는 일은 [귀찮지만 유용하다](http://docs.docker.io/en/latest/use/port_redirection/#binding-a-port-to-an-host-interface). 먼저 Dockerfile에서 포트를 노출시킨다. ``` EXPOSE <CONTAINERPORT> ``` 그리고 `docker run` 명령어를 통해서 컨테이너의 포트와 호스트의 포트를 맵핑시킨다. ``` docker run -p $HOSTPORT:$CONTAINERPORT -name CONTAINER -t someimage ``` Docker가 가상 머신에서 실행중이라면 추가적인 포트포워딩을 해줘야한다. 이러한 설정을 할 때는 Vagrantfile을 통해서 특정 범위의 포트를 노출시켜 동적으로 맵핑하는 게 편리하다. ``` Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| @@ -225,39 +223,39 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| end ``` 만약 포트가 어디로 연결되었는지 기억이 안 난다면 `docker port` 명령어를 사용할 수 있다. ``` docker port CONTAINER $CONTAINERPORT ``` ## 팁 참고: * [15 Docker Tips in 5 minutes](http://sssslide.com/speakerdeck.com/bmorearty/15-docker-tips-in-5-minutes) ### 마지막에 실행된 컨테이너의 ID ``` alias dl='docker ps -l -q' docker run ubuntu echo hello world docker commit `dl` helloworld ``` ### 명령어와 함께 커밋하기 ``` docker commit -run='{"Cmd":["postgres", "-too -many -opts"]}' `dl` postgres ``` ### IP address 정보 ``` docker run -i -t ubuntu /bin/bash ``` 명령어를 사용하거나 아래 명령어를 사용합니다. ``` wget http://stedolan.github.io/jq/download/source/jq-1.3.tar.gz @@ -267,25 +265,25 @@ cd jq-1.3 docker inspect `dl` | jq -r '.[0].NetworkSettings.IPAddress' ``` ### 이미지의 환경 변수 읽어오기 ``` docker run -rm ubuntu env ``` ### 오래된 컨테이너들 삭제하기 ``` docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm ``` ### 멈춰있는 컨테이너들 삭제하기 ``` docker rm `docker ps -a -q` ``` ### 이미지의 의존관계 이미지로 출력하기 ``` docker images -viz | dot -Tpng -o docker.png -
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/) -
wsargent revised this gist
Nov 19, 2013 . 1 changed file with 32 additions and 24 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 @@ -99,18 +99,28 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ ### Lifecycle * [`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 > NOTE: `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 images`](http://docs.docker.io/en/latest/commandline/cli/#images) shows all images * [`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 A repository is a *hosted* collection of tagged images that together create the file system for a container. A registry is a *host* -- a server that stores repositories and provides an HTTP API for [managing the uploading and downloading of repositories](http://docs.docker.io/en/latest/use/workingwithrepository/). Docker.io hosts its own [index](https://index.docker.io/) to a central registry which contains a large number of repositories. ### Import / Export * [`docker search`](http://docs.docker.io/en/latest/commandline/cli/#search) searches registry for image @@ -124,27 +134,9 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ Best to look at [http://github.com/wsargent/docker-devenv](http://github.com/wsargent/docker-devenv) and the best practices for more details. ## Layers The filesystem in Docker is based on layers. They're like [git commits or changesets for filesystems](http://docker.readthedocs.org/en/latest/terms/layer/). ## Links @@ -171,4 +163,20 @@ $ALIAS_PORT_1337_TCP_ADDR And you can connect to it that way. ## Volumes Docker volumes are free-floating filesystems. 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. If you just want to map a directory on the host to a docker container, use ``` docker run -v /myhost/dir:/docker/dir my_image ``` 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 19, 2013 . 1 changed file with 1 addition and 8 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 @@ -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 -
wsargent revised this gist
Nov 19, 2013 . 1 changed file with 7 additions and 11 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 @@ -111,7 +111,13 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ * [`docker insert`](http://docs.docker.io/en/latest/commandline/cli/#insert) inserts a file from URL into image * [`docker tag`](http://docs.docker.io/en/latest/commandline/cli/#tag) tags an image to a name (local or registry) ## Registry and Repository A repository is a *hosted* collection of tagged images that together create the file system for a container. A registry is a *host* -- a server that stores repositories and provides an HTTP API for [managing the uploading and downloading of repositories](http://docs.docker.io/en/latest/use/workingwithrepository/). 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 @@ -124,16 +130,6 @@ Images are just [templates for docker containers](http://docker.readthedocs.org/ Best to look at [http://github.com/wsargent/docker-devenv](http://github.com/wsargent/docker-devenv) and the best practices for more details. ## Layers The filesystem in Docker is based on layers. They're kind of like [git commits or changesets for filesystems](http://docker.readthedocs.org/en/latest/terms/layer/). -
wsargent revised this gist
Nov 19, 2013 . 1 changed file with 2 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 @@ -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: @@ -183,4 +183,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