这是本文档旧的修订版!
Docker
- Official site: docker.com
- 我的博文, 时间过久, 可能失效:Linux application containers related
- 这个教程不错:Docker —— 从入门到实践 ←-了解个大概, 由于 docker 更新蛮快,还是要看官方文档.
- 私有仓库相关,包括怎么设置非https私有仓.
- docker compose 原 fig
Tips
- 因为docker一个容器只支持运行一个前台, 所以在docker内使用supervisor来启动多个程序/服务更方便,更易管理.详见: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)
docker 背后的技术
- Linux Namespace: Namespaces in operation, Namespace man page
- Linux CGroup: coolshell's article, Linux Kernel Cgroup Documents
Mac docker
- Mac Docker 目前(v1.13.0)不能在主机访问到 172.17.0.1(docker0)
- Mac 进入休眠时,有可能会让容器时间不准。
Docker Logs
- container 默认标准输出 stdout stderr 会被 docker 以 json 格式记录到文件里。文件路径可用
docker inspect <container> | grep LogPath
查看
- 默认日志可用
docker logs <container>
查看,带时间戳加参数-t
- 这些日志会随时间增多,需要做一些定期清理。