os docker
dockerfile
tutorial
查看日志
docker logs -f my-container-name类似tail -fdocker logs -n 10 my-container-name显示最近 10 行.
公有云服务
docker image 存放目录
/var/lib/docker下文件可以清理掉, 然后重新docker pull.
docker 的简单介绍
- docker daemon
- docker client
- LXC/VM
- 镜像 (image)
- 容器 (container)
- Understand images, containers, and storage drivers
layer 分析工具
文件系统
- AUFS
- 写时拷贝 (copy-on-write)
- 数据卷 (volume)
- docker volume 命令
网络
- 端口映射 (port mapping)
- 容器链接 (container link)
- 用户自定义网络
- docker network 命令
- Understand Docker container networks
- Legacy container links
docker 使用上的建议
- tag 不要用 latest
- 使用提供 dockerfile 的镜像 (为了安全)
docker 官方组件的简单介绍
- machine
- compose
- swarm
dockerfile 的介绍
如何使用 dockerfile
- build
- 执行
docker build -f <dockerfile> <build-context-path>构建镜像 (image), 构建镜像需要一个 Dockerfile 文件和一个构建上下文 (build context). - Dockerfile 是一系列 docker 命令, 用于按步骤构建 docker 容器, 然后再导出一份镜像. 构建上下文会被发送给 docker daemon, 用于 ADD, COPY 等命令操作. 所以注意不要把
/目录或者其他过大的目录作为构建上下文.
编写 dockerfile 的最佳实践
- 12 factor: http://12factor.net/
注意中间层镜像
- 尽可能连用 LABEL, ENV, RUN 等命令, 因为每次执行一行命令, 都会产生一个新的镜像.
- 尽量这么写
LABEL home="http://gitlab.widget-inc.com/her/her-gateway" \
private="true"
ENV GATEWAY_VERSION="0.19.3" \
NODE_VERSION="0.12.9"
RUN addgroup -S redis && adduser -S -G redis redis
- 而不是:
LABEL home http://gitlab.widget-inc.com/her/her-gateway
LABEL private true
ENV GATEWAY_VERSION 0.19.3
ENV NODE_VERSION 0.12.9
RUN addgroup -S redis
RUN adduser -S -G redis redis
init 进程
是否要启动 sshd
是否要启动守护进程
日志转发
使用基础镜像
- phusion/baseimage-docker
- gliderlabs/docker-alpine alpine 是一个只有 5M 大小的 linux 系统, 基于 mulc 和 busybox
- Yelp/dumb-init
- krallin/tini
最佳实践
- Best practices for writing Dockerfiles Docker 官方撰写
- Quest for minimal Docker images 奇技淫巧
轻量级, 应用级的容器
docker 生态圈
- containerd: containerd is a daemon to control runC, built for performance and density.
- coreos
- rkt
- kubernetes
- mesos
docker生态
国内镜像
forum
tutorial
tools
源码分析
root
还有要有人回答下,docker服务端和客户端需要通过/var/run/docker.sock通信,这个目录需要root才能读写
我也尝试过chmod这个文件,以后客户端不用root也可以正常地执行命令