====== 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'' * 这些日志会随时间增多,需要做一些定期清理。