42
Docker Tips

Docker tips

Embed Size (px)

DESCRIPTION

Some tips in using docker

Citation preview

Page 1: Docker tips

Docker Tips

Page 2: Docker tips

Need fetch Dockerfile?

Page 4: Docker tips

Need fetch Dockerfile?• No!

• docker build https://github.com/menghan/airvideo-server-in-docker.git

Page 5: Docker tips

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

Page 6: Docker tips

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 -

Page 7: Docker tips

Store config in docker image?

Page 8: Docker tips

Store config in docker image?

• No!

Page 9: Docker tips

Store config in docker image?

• No!

• volume configs at runtime

Page 10: Docker tips

Store config in docker image? cont.

Page 11: Docker tips

Full stack image?

Page 12: Docker tips

Full stack image?

• No!

Page 13: Docker tips

Full stack image?

• No!

• size

Page 14: Docker tips

Full stack image?

• No!

• size

• update frequently

Page 15: Docker tips

Full stack image? cont.

• use —-link —-volumes-from

Page 16: Docker tips

Use ONBUILD

Page 17: Docker tips

Use ONBUILD

# base/Dockerfile

FROM gentoo:base

ONBUILD RUN layman -s douban

ONBUILD RUN eix-layman add douban

ONBUILD RUN eix-sync

Page 18: Docker tips

Docker as service

• redis

Page 19: Docker tips

Docker as program

Page 20: Docker tips

Docker as program

• docker run -v /usr/local:/data menghan/go-builder go get github.com/tools/godep

Page 21: Docker tips

Docker as program

• docker run -v /usr/local:/data menghan/go-builder go get github.com/tools/godep

• use as much docker as possible

Page 22: Docker tips

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!

Page 23: Docker tips

Docker as data

Page 24: Docker tips

Docker as data

• docker run -v /html —-name jekyll-html-c busybox true

Page 25: Docker tips

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]

Page 26: Docker tips

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

Page 27: Docker tips

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]

Page 28: Docker tips

Docker as shell

Page 29: Docker tips

Docker as shell

• We use this pattern a lot!

Page 30: Docker tips

Docker as shell

• We use this pattern a lot!

• docker run -it [-—rm] ubuntu bash

Page 31: Docker tips

Docker as shell

• We use this pattern a lot!

• docker run -it [-—rm] ubuntu bash

• start then attach

Page 32: Docker tips

Docker as shell

• We use this pattern a lot!

• docker run -it [-—rm] ubuntu bash

• start then attach

• docker in docker

Page 33: Docker tips

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 ?…

Page 34: Docker tips

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]

Page 35: Docker tips

Runtime uid

Page 36: Docker tips

Runtime uidWe have two ways:

Page 37: Docker tips

Runtime uidWe have two ways:

• use root everywhere (use 1000 everywhere)

Page 38: Docker tips

Runtime uidWe have two ways:

• use root everywhere (use 1000 everywhere)

• plan && arrange carefully

Page 39: Docker tips

Runtime uidWe have two ways:

• use root everywhere (use 1000 everywhere)

• plan && arrange carefully

My thought:

Page 40: Docker tips

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

Page 41: Docker tips

Docker’s latest update (since v1.0)

• .dockerignore (v1.1)

• /etc/{hosts,resolve.conf,hostname} editable (v1.2)

• search private registry

Page 42: Docker tips

Q and A