Docker
常用指令
開放使用者權限
sudo usermod -aG docker andrew
啟動 imag:
docker run -it ubuntu /bin/bash
指定 image 版本啟動 (-i interactive, -t tty):
docker run -it ubuntu:14.04 /bin/bash
背景啟動 image (-d dettach):
docker run -d ubuntu
進入執行中的 container:
docker exec -it c007a10e4 bash
更新 image:
docker pull ubuntu
停止執行中的 container:
docker stop c007a10e4
啟動停止執行中的 container:
docker start c007a10e4
列出執行中的 containers:
docker ps
列出包括停止的 containers (-a all):
docker ps -a
列出下載的 images:
docker images
掛目錄進去 (-v volume):
docker run -d ubuntu -v /home:/var/home
`
設定 port (-p port):
docker run -d ubuntu -p 80:3000
`
設定環境變數 (-e env):
docker run -d ubuntu -e "http_proxy=http://192.168.1.254:3128"
`
docker-gen
透過 container 資訊生成設定檔
以前透過 docker inspect 6680cc9d6d9a
取得資訊參考來寫設定檔,現在透過樣板語言來生成。
例如:
docker-gen nginx.tmpl nginx.conf
延伸用法產生設定檔後自動重啟指定 container :
docker-gen -notify-sighup nginx -watch -only-exposed -wait 5s:30s nginx.tmpl nginx.conf
案例 - letencrypt 自動生成 nginx 與 proxy:
simple-site:
image: nginx
container_name: simple-site
ports:
- "8080:80"
volumes:
- "./volumes/examples/simple-site/conf.d/:/etc/nginx/conf.d"
environment:
- VIRTUAL_HOST=site.example.com
- LETSENCRYPT_HOST=site.example.com
- [email protected]
nginx:
image: nginx
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- "/etc/nginx/conf.d"
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
- "./volumes/proxy/certs:/etc/nginx/certs:ro"
nginx-gen:
image: jwilder/docker-gen
container_name: nginx-gen
volumes:
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "./volumes/proxy/templates/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro"
volumes_from:
- nginx
entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -only-exposed -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
letsencrypt-nginx-proxy-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx-proxy-companion
volumes_from:
- nginx
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./volumes/proxy/certs:/etc/nginx/certs:rw"
environment:
- NGINX_DOCKER_GEN_CONTAINER=nginx-gen
- jrcs/letsencrypt-nginx-proxy-companion 啟動後會產生憑證
- nginx 等待生成設定檔與憑證產生
- nginx-gen 等待憑證產生,並依據 simple-site 接著產生 proxy 設定檔,重啟 nginx 生效
使用者只要維護 simple-site 的部份就好,就會自動產生憑證,且 proxy 也會幫你設定好。
共享 certs 憑證目錄
編註
- 這是一篇與 Android 開發較微無關的章節。屬於後端平台性的章節。
- 筆者是在 2013/11, 0.6.7 之後的版本接觸。