Upload
menghan-zheng
View
396
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Some tips in using docker
Citation preview
Docker Tips
Need fetch Dockerfile?
Need fetch Dockerfile?• No!
Need fetch Dockerfile?• No!
• docker build https://github.com/menghan/airvideo-server-in-docker.git
Need fetch Dockerfile?• No!
• docker build https://github.com/menghan/airvideo-server-in-docker.git
• docker build https://raw.githubusercontent.com/menghan/menghanrc/master/Dockerfiles/go-builder/Dockerfile
Need fetch Dockerfile?• No!
• docker build https://github.com/menghan/airvideo-server-in-docker.git
• docker build https://raw.githubusercontent.com/menghan/menghanrc/master/Dockerfiles/go-builder/Dockerfile
• | docker build -
Store config in docker image?
Store config in docker image?
• No!
Store config in docker image?
• No!
• volume configs at runtime
Store config in docker image? cont.
Full stack image?
Full stack image?
• No!
Full stack image?
• No!
• size
Full stack image?
• No!
• size
• update frequently
Full stack image? cont.
• use —-link —-volumes-from
Use ONBUILD
Use ONBUILD
# base/Dockerfile
FROM gentoo:base
ONBUILD RUN layman -s douban
ONBUILD RUN eix-layman add douban
ONBUILD RUN eix-sync
Docker as service
• redis
Docker as program
Docker as program
• docker run -v /usr/local:/data menghan/go-builder go get github.com/tools/godep
Docker as program
• docker run -v /usr/local:/data menghan/go-builder go get github.com/tools/godep
• use as much docker as possible
Docker as program
• docker run -v /usr/local:/data menghan/go-builder go get github.com/tools/godep
• use as much docker as possible
• install OS, install docker, pull images, work!
Docker as data
Docker as data
• docker run -v /html —-name jekyll-html-c busybox true
Docker as data
• docker run -v /html —-name jekyll-html-c busybox true
• docker run —-volumes-from jekyll-html-c -v /path/to/src:/src jekyll-image [compile /src and save html /html]
Docker as data
• docker run -v /html —-name jekyll-html-c busybox true
• docker run —-volumes-from jekyll-html-c -v /path/to/src:/src jekyll-image [compile /src and save html /html]
• docker run —-volumes-from jekyll-html-c nginx-image
Docker as data
• docker run -v /html —-name jekyll-html-c busybox true
• docker run —-volumes-from jekyll-html-c -v /path/to/src:/src jekyll-image [compile /src and save html /html]
• docker run —-volumes-from jekyll-html-c nginx-image
• docker run —-volumes-from jekyll-html-c -v $(pwd):/backup backup-image [tar czf /backup/html.tar.gz /html]
Docker as shell
Docker as shell
• We use this pattern a lot!
Docker as shell
• We use this pattern a lot!
• docker run -it [-—rm] ubuntu bash
Docker as shell
• We use this pattern a lot!
• docker run -it [-—rm] ubuntu bash
• start then attach
Docker as shell
• We use this pattern a lot!
• docker run -it [-—rm] ubuntu bash
• start then attach
• docker in docker
Docker as shell
• We use this pattern a lot!
• docker run -it [-—rm] ubuntu bash
• start then attach
• docker in docker
• docker in docker in docker ?…
Docker as net device
• docker run -v /path/config:/etc/config —-name vpn-client openvpn-client [connect]
• docker run —-net=container:vpn-client transmission-image [start transmission service]
Runtime uid
Runtime uidWe have two ways:
Runtime uidWe have two ways:
• use root everywhere (use 1000 everywhere)
Runtime uidWe have two ways:
• use root everywhere (use 1000 everywhere)
• plan && arrange carefully
Runtime uidWe have two ways:
• use root everywhere (use 1000 everywhere)
• plan && arrange carefully
My thought:
Runtime uidWe have two ways:
• use root everywhere (use 1000 everywhere)
• plan && arrange carefully
My thought:
add all possible users into an image, make it as base image
Docker’s latest update (since v1.0)
• .dockerignore (v1.1)
• /etc/{hosts,resolve.conf,hostname} editable (v1.2)
• search private registry
Q and A