====== Docker ======
FIXME
* Official site: [[http://www.docker.com|docker.com]]
* 我的博文, 时间过久, 可能失效:[[http://wp.joak.org/archives/189|Linux application containers related]]
* 这个教程不错:[[http://yeasy.gitbooks.io/docker_practice/|Docker —— 从入门到实践]] <--了解个大概, 由于 docker 更新蛮快,还是要看官方文档.
* [[https://yeasy.gitbook.io/docker_practice/repository/registry|私有仓库相关]],包括怎么设置非https私有仓.
* [[http://docs.docker.com/compose/| docker compose]] 原 fig
===== Tips =====
* 因为docker一个容器只支持运行一个前台, 所以在docker内使用supervisor来启动多个程序/服务更方便,更易管理.详见:[[http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/|Using supervisor with docker to manage processes]]
* The ''docker exec'' command runs a new command in a running container.This will create a new Bash session in the container container_name:$ sudo docker exec -it container_name bash
* Dockerfile 的编写注意点:
* 一个 ''RUN'' 就会产生新的一层,所以尽量把安装过程写在一行;
* 仅仅''MAINTAINR'' 不同得到的image也会不同, 虽然功能完全一样. 所以最好确保同时只有一个或者干脆不写;
* 一些不依赖系统的程序可以使用 ''FROM scrach'' 来缩减所得 image 的大小.
* 删除所有容器 ''docker rm $(docker ps -aq)''\
* 转移数据目录:[[https://linuxiac.com/how-to-change-docker-data-directory/|how-to-change-docker-data-directory]]
===== docker 背后的技术 =====
* Linux Namespace: [[http://lwn.net/Articles/531114/|Namespaces in operation]], [[http://man7.org/linux/man-pages/man7/namespaces.7.html|Namespace man page]]
* Linux CGroup: [[http://coolshell.cn/articles/17049.html|coolshell's article]], [[https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html|Linux Kernel Cgroup Documents]]
===== Mac docker =====
* Mac Docker 目前(v1.13.0)不能在主机访问到 172.17.0.1(docker0)
* 详见:[[https://github.com/docker/for-mac/issues/483]]
* Mac 进入休眠时,有可能会让容器时间不准。
===== Docker Logs =====
* container 默认标准输出 stdout stderr 会被 docker 以 json 格式记录到文件里。文件路径可用
docker inspect | grep LogPath
查看
* 默认日志可用 ''docker logs '' 查看,带时间戳加参数''-t''
* 这些日志会随时间增多,需要做一些定期清理。